Merge "Make flushing tokens more robust" into stable/ocata

This commit is contained in:
Jenkins 2017-06-23 04:37:12 +00:00 committed by Gerrit Code Review
commit 76bdca6498
1 changed files with 6 additions and 0 deletions

View File

@ -277,6 +277,8 @@ class Token(token.persistence.TokenDriverBase):
def flush_expired_tokens(self):
with sql.session_for_write() as session:
# Turn off autocommit, as it doesn't work well with batch delete
session.autocommit = False
dialect = session.bind.dialect.name
expiry_range_func = self._expiry_range_strategy(dialect)
query = session.query(TokenModel.expires)
@ -286,6 +288,10 @@ class Token(token.persistence.TokenDriverBase):
delete_query = query.filter(TokenModel.expires <=
expiry_time)
row_count = delete_query.delete(synchronize_session=False)
# Explicitly commit each batch so as to free up
# resources early. We do not actually need
# transactional semantics here.
session.commit()
total_removed += row_count
LOG.debug('Removed %d total expired tokens', total_removed)