Compare commits
1 Commits
b6bba16505
...
e0559c2ed1
Author | SHA1 | Date | |
---|---|---|---|
e0559c2ed1 |
|
@ -248,23 +248,22 @@ class Fsck(object):
|
|||
|
||||
# Check that we can open bulkdata
|
||||
tab = nilmdb.server.bulkdata.Table(bulk)
|
||||
except FsckFormatError:
|
||||
except FsckFormatError as e:
|
||||
# If there are no files except _format, try deleting
|
||||
# the entire stream; this may remove metadata, but
|
||||
# it's probably unimportant.
|
||||
files = list(os.listdir(bulk))
|
||||
if len(files) > 1:
|
||||
raise
|
||||
if len(files) == 1 and files[0] != b'_format':
|
||||
raise
|
||||
raise FsckFormatError(f"{path}: can't load _format, "
|
||||
f"but data is also present")
|
||||
|
||||
# Since the stream was empty, just remove it
|
||||
self.fix_remove_stream(sid, path, bulk,
|
||||
"empty, with corrupted format file")
|
||||
|
||||
except FsckError:
|
||||
raise
|
||||
except Exception as e:
|
||||
except FsckError as e:
|
||||
raise e
|
||||
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()
|
||||
|
@ -278,6 +277,7 @@ class Fsck(object):
|
|||
fmt = pickle.load(f)
|
||||
except Exception as e:
|
||||
raise FsckFormatError(f"{path}: can't load _format file ({e})")
|
||||
|
||||
if fmt["version"] != 3:
|
||||
raise FsckFormatError("%s: bad or unsupported bulkdata version %d",
|
||||
path, fmt["version"])
|
||||
|
|
|
@ -163,3 +163,8 @@ class TestFsck(object):
|
|||
raise Exception("hi")
|
||||
with assert_raises(Exception):
|
||||
foo()
|
||||
|
||||
self.failmsg("test2v", "can't load _format, but data is also present")
|
||||
self.failmsg("test2v1", "bad bulkdata table")
|
||||
self.failmsg("test2v2", "empty, with corrupted format file", fix=False)
|
||||
self.okmsg("test2v2", "empty, with corrupted format file")
|
||||
|
|
Loading…
Reference in New Issue
Block a user