diff options
author | John Dickinson <john.dickinson@rackspace.com> | 2011-08-29 10:58:07 -0500 |
---|---|---|
committer | John Dickinson <john.dickinson@rackspace.com> | 2011-08-29 10:58:07 -0500 |
commit | 6f854676f1c37191698235a6767a5b3a22c11b63 (patch) | |
tree | 9f2ebcf98d294e9b480c58edd7b74f5655fa0c9e | |
parent | dca25523936e6dc8187be94997750dbdee307bcb (diff) | |
download | swift-6f854676f1c37191698235a6767a5b3a22c11b63.tar.gz |
deleting a db now also clears the db's metadata
-rw-r--r-- | swift/common/db.py | 7 | ||||
-rw-r--r-- | test/unit/common/test_db.py | 16 |
2 files changed, 14 insertions, 9 deletions
diff --git a/swift/common/db.py b/swift/common/db.py index 725292b30..fdc5ef484 100644 --- a/swift/common/db.py +++ b/swift/common/db.py @@ -253,6 +253,13 @@ class DatabaseBroker(object): :param timestamp: delete timestamp """ timestamp = normalize_timestamp(timestamp) + # first, clear the metadata + meta = self.metadata + cleared_meta = {} + for k in meta.iterkeys(): + cleared_meta[k] = ('', timestamp) + self.update_metadata(cleared_meta) + # then mark the db as deleted with self.get() as conn: self._delete_db(conn, timestamp) conn.commit() diff --git a/test/unit/common/test_db.py b/test/unit/common/test_db.py index 10d854fe2..57c89e38e 100644 --- a/test/unit/common/test_db.py +++ b/test/unit/common/test_db.py @@ -144,20 +144,18 @@ class TestDatabaseBroker(unittest.TestCase): stub_called = [False] def stub(*args, **kwargs): stub_called[0] = True - broker = DatabaseBroker(':memory:') - broker._initialize = stub + #broker = DatabaseBroker(':memory:') + # Initializes a good broker for us + broker = self.get_replication_info_tester(metadata=True) broker.initialize(normalize_timestamp('1')) self.assert_(broker.conn is not None) broker._delete_db = stub stub_called[0] = False broker.delete_db('2') - self.assert_(stub_called[0]) - broker = DatabaseBroker(os.path.join(self.testdir, '1.db')) - broker._initialize = stub - broker.initialize(normalize_timestamp('1')) - broker._delete_db = stub - stub_called[0] = False - broker.delete_db('2') + m2 = broker.metadata + self.assert_(not any(v[0] for v in m2.itervalues())) + self.assert_(all(v[1] == normalize_timestamp('2') + for v in m2.itervalues())) self.assert_(stub_called[0]) def test_get(self): |