Handle sqlite3 exceptions in __setitem__ instead of checking presence

This commit is contained in:
Lee Miller 2024-09-08 23:56:29 +03:00
parent 5060c5e005
commit 60398bf5d3
Signed by: lee.miller
GPG Key ID: 4F97A5EA88F4AB63
2 changed files with 9 additions and 6 deletions

View File

@ -477,7 +477,7 @@ class Connection(ConnectionBase):
logging.debug('%s:%s -> %s', self.host_print, self.port, obj)
self.vectors_requested.pop(obj.vector, None)
self.vectors_to_get.discard(obj.vector)
if obj.is_valid() and obj.vector not in shared.objects:
if obj.is_valid():
shared.objects[obj.vector] = obj
if (
obj.object_type == shared.i2p_dest_obj_type

View File

@ -128,11 +128,14 @@ class Inventory():
def __setitem__(self, vector, obj):
with shared.objects_lock:
cur = self._db.execute(
'INSERT INTO objects VALUES (?,?,?,?,?,?,?,?)', (
vector, obj.expires_time, obj.object_type, obj.version,
obj.stream_number, obj.tag, obj.data, obj.offset
))
try:
cur = self._db.execute(
'INSERT INTO objects VALUES (?,?,?,?,?,?,?,?)', (
vector, obj.expires_time, obj.object_type, obj.version,
obj.stream_number, obj.tag, obj.data, obj.offset
))
except (sqlite3.DatabaseError, sqlite3.IntegrityError):
return
self._db.commit()
self.rowid = cur.lastrowid