summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Dickinson <john.dickinson@rackspace.com>2011-08-29 10:58:07 -0500
committerJohn Dickinson <john.dickinson@rackspace.com>2011-08-29 10:58:07 -0500
commit6f854676f1c37191698235a6767a5b3a22c11b63 (patch)
tree9f2ebcf98d294e9b480c58edd7b74f5655fa0c9e
parentdca25523936e6dc8187be94997750dbdee307bcb (diff)
downloadswift-6f854676f1c37191698235a6767a5b3a22c11b63.tar.gz
deleting a db now also clears the db's metadata
-rw-r--r--swift/common/db.py7
-rw-r--r--test/unit/common/test_db.py16
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):