db session bug fix for multi-threading scenario

This commit is contained in:
peng.xu 2019-10-18 17:13:28 +08:00
parent c40b72df96
commit bdff52021d
2 changed files with 5 additions and 0 deletions

View File

@ -42,6 +42,9 @@ class DB:
def Session(self):
return self.session_factory()
def remove_session(self):
self.session_factory.remove()
def drop_all(self):
self.Model.metadata.drop_all(self.engine)

View File

@ -53,6 +53,7 @@ class FileBasedHashRingRouter(RouterMixin):
def _route(self, table_name, range_array, metadata=None, **kwargs):
# PXU TODO: Implement Thread-local Context
# PXU TODO: Session life mgt
try:
table = db.Session.query(Tables).filter(
and_(Tables.table_id == table_name,
@ -63,6 +64,7 @@ class FileBasedHashRingRouter(RouterMixin):
if not table:
raise exceptions.TableNotFoundError(table_name, metadata=metadata)
files = table.files_to_search(range_array)
db.remove_session()
servers = self.conn_mgr.conn_names
logger.info('Available servers: {}'.format(servers))