diff --git a/minode/shared.py b/minode/shared.py index 72864ec..a964dca 100644 --- a/minode/shared.py +++ b/minode/shared.py @@ -63,4 +63,3 @@ outgoing_connections = 8 connection_limit = 250 objects = {} -objects_lock = threading.Lock() diff --git a/minode/sql.py b/minode/sql.py index 1eee6bd..cd89d45 100644 --- a/minode/sql.py +++ b/minode/sql.py @@ -3,6 +3,7 @@ import logging import os import sqlite3 +import threading import time from . import shared, structure @@ -13,6 +14,7 @@ sqlite3.threadsafety = 3 class Inventory(): """sqlite inventory""" def __init__(self): + self._lock = threading.Lock() self._db = sqlite3.connect( os.path.join(shared.data_directory, 'objects.dat'), check_same_thread=False @@ -53,7 +55,7 @@ class Inventory(): return cur def cleanup(self): - with shared.objects_lock: + with self._lock: self._db.execute( 'DELETE FROM objects WHERE expires < ?', (int(time.time()) - 3 * 3600,) @@ -123,14 +125,14 @@ class Inventory(): return item def __delitem__(self, vector): - with shared.objects_lock: # KeyError + with self._lock: # KeyError self._db.execute( 'DELETE FROM objects WHERE vector = ?', (vector,)) self._db.commit() self.rowid = len(self) def __setitem__(self, vector, obj): - with shared.objects_lock: + with self._lock: try: cur = self._db.execute( 'INSERT INTO objects VALUES (?,?,?,?,?,?,?,?)', (