|
|
@@ -246,7 +246,7 @@ class Fsck(object): |
|
|
|
|
|
|
|
# Check that we can open bulkdata |
|
|
|
tab = nilmdb.server.bulkdata.Table(bulk) |
|
|
|
except FsckFormatError as e: |
|
|
|
except FsckFormatError: |
|
|
|
# If there are no files except _format, try deleting |
|
|
|
# the entire stream; this may remove metadata, but |
|
|
|
# it's probably unimportant. |
|
|
@@ -260,13 +260,12 @@ class Fsck(object): |
|
|
|
"empty, with corrupted format file") |
|
|
|
except FsckError as e: |
|
|
|
raise e |
|
|
|
except Exception as e: # pragma: no cover |
|
|
|
except Exception as e: # pragma: no cover |
|
|
|
# No coverage because this is an unknown/unexpected error |
|
|
|
raise FsckError("%s: can't open bulkdata: %s", |
|
|
|
path, str(e)) |
|
|
|
tab.close() |
|
|
|
|
|
|
|
|
|
|
|
def fix_row_overlap(self, sid, path, existing, new): |
|
|
|
# If the file rows (spos, epos) overlap in the interval table, |
|
|
|
# and the overlapping ranges look like this: |
|
|
@@ -293,7 +292,7 @@ class Fsck(object): |
|
|
|
raise FsckError(f"{path}: unfixable overlap") |
|
|
|
match = intv |
|
|
|
if match is None: |
|
|
|
err(f"no intervals overlapped in the right way\n") |
|
|
|
err("no intervals overlapped in the right way\n") |
|
|
|
raise FsckError(f"{path}: unfixable overlap") |
|
|
|
|
|
|
|
# Truncate the file position |
|
|
@@ -569,9 +568,10 @@ class Fsck(object): |
|
|
|
if match.any(): |
|
|
|
row = numpy.argmax(match) |
|
|
|
if ts[row+1] != 0: |
|
|
|
raise FsckError("%s: non-monotonic timestamp (%d -> %d)" |
|
|
|
" at row %d", path, ts[row], ts[row+1], |
|
|
|
row + start) |
|
|
|
raise FsckError( |
|
|
|
"%s: non-monotonic timestamp (%d -> %d) " |
|
|
|
"at row %d", path, ts[row], ts[row+1], |
|
|
|
row + start) |
|
|
|
|
|
|
|
# Timestamp is zero and non-monotonic; |
|
|
|
# assume file ends with zeroed data and just truncate it. |
|
|
|