X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=lbs-util;h=6f2dd07dc6034d357eea7c9414637245c0508474;hb=2fc79690f0e5066b689746b18d42b95eca48a0ab;hp=8789a758f1ccc6941ea602bd14301a2c60e29765;hpb=cc2d3611ed50f5965a9138ffaf3262417993c4f8;p=cumulus.git diff --git a/lbs-util b/lbs-util index 8789a75..6f2dd07 100755 --- a/lbs-util +++ b/lbs-util @@ -132,6 +132,7 @@ def cmd_verify_snapshots(snapshots): lowlevel = lbs.LowlevelDataStore(options.store) store = lbs.ObjectStore(lowlevel) for s in snapshots: + lbs.accessed_segments.clear() print "#### Snapshot", s d = lbs.parse_full(store.load_snapshot(s)) check_version(d['Format']) @@ -150,6 +151,17 @@ def cmd_verify_snapshots(snapshots): raise ValueError("File size does not match!") if not verifier.valid(): raise ValueError("Bad checksum found") + + # Verify that the list of segments included with the snapshot was + # actually accurate: covered all segments that were really read, and + # doesn't contain duplicates. + listed_segments = set(d['Segments'].split()) + if lbs.accessed_segments - listed_segments: + print "Error: Some segments not listed in descriptor!" + print sorted(list(lbs.accessed_segments - listed_segments)) + if listed_segments - lbs.accessed_segments : + print "Warning: Extra unused segments listed in descriptor!" + print sorted(list(listed_segments - lbs.accessed_segments)) store.cleanup() # Restore a snapshot, or some subset of files from it