Merge "Protect against hash cleanup errors on PUTs"
This commit is contained in:
commit
d412f6c05d
@ -662,7 +662,10 @@ class DiskFileWriter(object):
|
|||||||
# After the rename completes, this object will be available for other
|
# After the rename completes, this object will be available for other
|
||||||
# requests to reference.
|
# requests to reference.
|
||||||
renamer(self._tmppath, target_path)
|
renamer(self._tmppath, target_path)
|
||||||
hash_cleanup_listdir(self._datadir)
|
try:
|
||||||
|
hash_cleanup_listdir(self._datadir)
|
||||||
|
except OSError:
|
||||||
|
logging.exception(_('Problem cleaning up %s'), self._datadir)
|
||||||
|
|
||||||
def put(self, metadata):
|
def put(self, metadata):
|
||||||
"""
|
"""
|
||||||
|
@ -1577,6 +1577,24 @@ class TestDiskFile(unittest.TestCase):
|
|||||||
with df.open():
|
with df.open():
|
||||||
self.assertEqual(df.timestamp, '1383181759.12345')
|
self.assertEqual(df.timestamp, '1383181759.12345')
|
||||||
|
|
||||||
|
def test_error_in_hashdir_cleanup_listdir(self):
|
||||||
|
|
||||||
|
def mock_hcl(*args, **kwargs):
|
||||||
|
raise OSError()
|
||||||
|
|
||||||
|
df = self._get_open_disk_file()
|
||||||
|
ts = time()
|
||||||
|
with mock.patch("swift.obj.diskfile.hash_cleanup_listdir",
|
||||||
|
mock_hcl):
|
||||||
|
try:
|
||||||
|
df.delete(ts)
|
||||||
|
except OSError:
|
||||||
|
self.fail("OSError raised when it should have been swallowed")
|
||||||
|
exp_name = '%s.ts' % str(normalize_timestamp(ts))
|
||||||
|
dl = os.listdir(df._datadir)
|
||||||
|
self.assertEquals(len(dl), 2)
|
||||||
|
self.assertTrue(exp_name in set(dl))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
Reference in New Issue
Block a user