fix blob manager db race condition

This commit is contained in:
Jack Robison 2017-06-09 14:09:17 -04:00
parent 5679ffb6a9
commit 82118e6692
2 changed files with 3 additions and 4 deletions

View file

@ -17,7 +17,7 @@ at anytime.
*
### Fixed
*
* Race condition from improper initialization and shutdown of the blob manager database
*
### Deprecated

View file

@ -83,7 +83,7 @@ class DiskBlobManager(BlobManager):
BlobManager.__init__(self, hash_announcer)
self.blob_dir = blob_dir
self.db_file = os.path.join(db_dir, "blobs.db")
self.db_conn = None
self.db_conn = adbapi.ConnectionPool('sqlite3', self.db_file, check_same_thread=False)
self.blob_type = BlobFile
self.blob_creator_type = BlobFileCreator
# TODO: consider using an LRU for blobs as there could potentially
@ -104,7 +104,7 @@ class DiskBlobManager(BlobManager):
if self._next_manage_call is not None and self._next_manage_call.active():
self._next_manage_call.cancel()
self._next_manage_call = None
self.db_conn = None
self.db_conn.close()
return defer.succeed(True)
def get_blob(self, blob_hash, length=None):
@ -233,7 +233,6 @@ class DiskBlobManager(BlobManager):
# to a bug in twisted, where the connection is closed by a different thread than the
# one that opened it. The individual connections in the pool are not used in multiple
# threads.
self.db_conn = adbapi.ConnectionPool('sqlite3', self.db_file, check_same_thread=False)
def create_tables(transaction):
transaction.execute("create table if not exists blobs (" +