cat.compare
Overview
Developers frequently need to compare two clusters. Determining the differences between them visually is too error-prone and
because the files reside in containers, normal comparison tools are not available. During the catalog process, a cryptographic
signature is taken of the contents of each file and these signatures may be used to perform a very fast comparison of the
contents of two clusters.
The COMPARE Operation
Listing the catalog's primary contents tells us the clusters available for comparison:
(py11.venv) λ cdc.io cat.list -d nccwork.sqlite3
Cluster Name
0 CybisRelease1
1 NCC.CybisRelease1
2 TH.CybisRelease1
Our task is to determine how far cluster “NCC.CybisRelease1” has deviated from the baseline “TH.CybisRelease1”.
We invoke the cat.compare
subcommand and the following is displayed in less than a second (on most systems):
(py11.venv) λ cdc.io cat.compare -d nccwork.sqlite3 TH.CybisRelease1 NCC.CybisRelease1
There are 29 differences between TH.CybisRelease1 and NCC.CybisRelease1.
PLATO File File Type A File Type B Account A Account B Blocks A Blocks B File Copy Mode Cluster A MFN A Cluster B MFN B
0 a0aids1 tutor a tutor a system system 28 28 AUTO(copy in-place) NCC.CybisRelease1 system TH.CybisRelease1 system
1 accountcom tutor a tutor a s0files s0files 42 42 AUTO(copy in-place) NCC.CybisRelease1 s0files TH.CybisRelease1 s0files
2 author group f group f cybdeva cybdeva 28 28 AUTO(copy in-place) NCC.CybisRelease1 system5 TH.CybisRelease1 system5
3 awork account l ---------- awork ---------- 21 0 AUTO(create) TH.CybisRelease1 system5 None None
4 ccobol group f ---------- cybdeva ---------- 7 0 AUTO(create) NCC.CybisRelease1 system None None
5 ccrm group f ---------- cybdeva ---------- 14 0 AUTO(create) NCC.CybisRelease1 system None None
6 cfortran group f ---------- cybdeva ---------- 7 0 AUTO(create) NCC.CybisRelease1 system None None
7 cnos group f ---------- cybdeva ---------- 35 0 AUTO(create) NCC.CybisRelease1 system None None
8 cnosts group f ---------- cybdeva ---------- 7 0 AUTO(create) NCC.CybisRelease1 system None None
9 compass group f ---------- cybdeva ---------- 7 0 AUTO(create) NCC.CybisRelease1 system None None
10 cppu group f ---------- cybdeva ---------- 7 0 AUTO(create) NCC.CybisRelease1 system None None
11 ctutor group f ---------- cybdeva ---------- 7 0 AUTO(create) NCC.CybisRelease1 system None None
12 cybdeva account l account l cybdeva cybdeva 21 21 AUTO(copy in-place) NCC.CybisRelease1 system4 TH.CybisRelease1 system4
13 cybmods compass e compass e s0sup s0sup 21 21 AUTO(copy in-place) NCC.CybisRelease1 s0stuff TH.CybisRelease1 s0stuff
14 guests group f ---------- cybdeva ---------- 140 0 AUTO(create) NCC.CybisRelease1 system5 None None
15 noscrse1 instruct a ---------- cybdeva ---------- 14 0 AUTO(create) NCC.CybisRelease1 system None None
16 plmcom tutor a tutor a s0files s0files 42 42 AUTO(copy in-place) NCC.CybisRelease1 s0files TH.CybisRelease1 s0files
17 plmods compass e compass e s0sup s0sup 126 126 AUTO(copy in-place) NCC.CybisRelease1 s0stuff TH.CybisRelease1 s0stuff
18 s group f group f system system 7 7 AUTO(copy in-place) NCC.CybisRelease1 system TH.CybisRelease1 system
19 s0file tutor a tutor a s0files s0files 14 14 AUTO(copy in-place) NCC.CybisRelease1 s0files TH.CybisRelease1 s0files
20 s0files account l account l s0files s0files 21 21 AUTO(copy in-place) NCC.CybisRelease1 s0files TH.CybisRelease1 s0files
21 s0sysfile tutor a tutor a s0files s0files 70 70 AUTO(copy in-place) NCC.CybisRelease1 s0files TH.CybisRelease1 s0files
22 s0sysmsg gnotes i gnotes i system system 70 70 AUTO(copy in-place) NCC.CybisRelease1 system TH.CybisRelease1 system
23 sysfile tutor a tutor a s0files s0files 126 126 AUTO(copy in-place) NCC.CybisRelease1 s0files TH.CybisRelease1 s0files
24 system account l account l system system 21 21 AUTO(copy in-place) NCC.CybisRelease1 system TH.CybisRelease1 system
25 thc group f ---------- awork ---------- 14 0 AUTO(create) TH.CybisRelease1 system2 None None
26 tutorlang tutor a ---------- awork ---------- 70 0 AUTO(create) TH.CybisRelease1 system5 None None
27 tutplm plmcurr h ---------- cybdeva ---------- 126 0 AUTO(create) NCC.CybisRelease1 system None None
28 wsbatch compass e ---------- cybdeva ---------- 126 0 AUTO(create) NCC.CybisRelease1 system None None
29 Differences were found.
Analyzing the Output
Just because two files differ doesn't tell us enough. Unless we specifically understand the contents of the
file in question, “being different” doesn't indicate whether the differences are desireable or not.
In the list above, item 0 a0aids1 contains different block types:
Commons can be very volatile and may be the reason for the discrepancy between the two clusters.
In this case inspecting the LAST EDITED
dates of the blocks may be more informative.
Likewise, other files can be quite volatile, especially system files such as:
Special Files
accountcom
plmcom
s0file
s0files
s0sysfile
sysfile
|
Group Files
Notes Files
Account Files
Datasets
Namesets
|
Therefore, process of elimination tells us that the most likely changes between these two systems were the files
not present on the TH.CybisRelease1, added to the NCC.CybisRelease1 distribution:
Account File
Groups Files
ccobol
ccrm
cfortran
cnos
cnosts
compass
cppu
ctutor
guests
thc
|
Instructor File
-
TUTOR File
Compass File
|
The report also provides side-by-side comparison between the corresponding files and attempts to make
recommendations regarding the possibility of copying the file using cdc.io
.
Attributes Displayed
See the article
Copy Modes for guidance regarding the dangers of copying to a live system.
Success
Congratulations!
You have now successfully compared the contents of two clusters!