Have repo deletion not lock all the things

This commit is contained in:
Joseph Schorr 2016-08-03 15:03:02 -04:00
parent 4e9800dfc2
commit 0b5cd95693
2 changed files with 36 additions and 5 deletions

View file

@ -1654,14 +1654,17 @@ class log_queries(object):
class check_transitive_deletes(log_queries):
def __init__(self):
def __init__(self, allowed_query_check=None):
super(check_transitive_deletes, self).__init__(query_filter=r'^DELETE.+IN \(SELECT.+$')
self.allowed_query_check = allowed_query_check
def __exit__(self, exc_type, exc_val, exc_tb):
super(check_transitive_deletes, self).__exit__(exc_type, exc_val, exc_tb)
queries = self.get_queries()
if queries:
raise Exception('Detected transitive deletion in queries: %s' % queries)
if queries and self.allowed_query_check:
for query in queries:
if query.find(self.allowed_query_check) < 0:
raise Exception('Detected transitive deletion in queries: %s' % queries)
class TestDeleteRepository(ApiTestCase):
@ -1747,7 +1750,7 @@ class TestDeleteRepository(ApiTestCase):
date=datetime.datetime.now() - datetime.timedelta(days=5), count=6)
# Delete the repository.
with check_transitive_deletes():
with check_transitive_deletes(allowed_query_check='todelete'):
self.deleteResponse(Repository, params=dict(repository=self.COMPLEX_REPO))
# Verify the repo was deleted.