Merge "Improve test coverage for metadata reclaim" into feature/deep

This commit is contained in:
Zuul 2018-04-27 18:49:37 +00:00 committed by Gerrit Code Review
commit 1b9d1e0f30
3 changed files with 13 additions and 10 deletions

View File

@ -910,12 +910,15 @@ class DatabaseBroker(object):
def reclaim(self, age_timestamp, sync_timestamp):
"""
Delete rows from the db_contains_type table that are marked deleted
and whose created_at timestamp is < age_timestamp. Also deletes rows
from incoming_sync and outgoing_sync where the updated_at timestamp is
< sync_timestamp.
Delete reclaimable rows and metadata from the db.
In addition, this calls the DatabaseBroker's :func:`_reclaim` method.
By default this method will delete rows from the db_contains_type table
that are marked deleted and whose created_at timestamp is <
age_timestamp, and deletes rows from incoming_sync and outgoing_sync
where the updated_at timestamp is < sync_timestamp. In addition, this
calls the :meth:`_reclaim_metadata` method.
Subclasses may reclaim other items by overriding :meth:`_reclaim`.
:param age_timestamp: max created_at timestamp of object rows to delete
:param sync_timestamp: max update_at timestamp of sync rows to delete
@ -926,7 +929,7 @@ class DatabaseBroker(object):
self._commit_puts()
with self.get() as conn:
self._reclaim(conn, age_timestamp, sync_timestamp)
DatabaseBroker._reclaim_metadata(self, conn, age_timestamp)
self._reclaim_metadata(conn, age_timestamp)
conn.commit()
def _reclaim(self, conn, age_timestamp, sync_timestamp):

View File

@ -1550,7 +1550,7 @@ class ContainerBroker(DatabaseBroker):
try:
conn.execute('''
DELETE FROM shard_ranges WHERE deleted = 1 AND timestamp < ?
AND name!= ?
AND name != ?
''', (sync_timestamp, self.path))
except sqlite3.OperationalError as err:
if 'no such table: shard_ranges' not in str(err):

View File

@ -1133,9 +1133,9 @@ class TestDatabaseBroker(unittest.TestCase):
def test_metadata(self):
def reclaim(broker, timestamp):
with broker.get() as conn:
broker._reclaim_metadata(conn, timestamp)
conn.commit()
# only testing _reclaim_metadata here
with patch.object(broker, '_reclaim'):
broker.reclaim(timestamp, timestamp)
# Initializes a good broker for us
broker = self.get_replication_info_tester(metadata=True)
# Add our first item