fixed race condition in db
authorforrest <forrest@470744a7-cac9-478e-843e-5ec1b25c69e8>
Thu, 16 Jun 2011 19:51:37 +0000 (19:51 +0000)
committerforrest <forrest@470744a7-cac9-478e-843e-5ec1b25c69e8>
Thu, 16 Jun 2011 19:51:37 +0000 (19:51 +0000)
git-svn-id: svn://forre.st/p2pool@1359 470744a7-cac9-478e-843e-5ec1b25c69e8

db.py

diff --git a/db.py b/db.py
index be0a815..d09010b 100644 (file)
--- a/db.py
+++ b/db.py
@@ -8,8 +8,7 @@ class SQLiteDict(object):
         self._db.execute('CREATE TABLE IF NOT EXISTS %s(key BLOB PRIMARY KEY NOT NULL, value BLOB NOT NULL)' % (self._table,))
     
     def __len__(self):
-        for row in self._db.execute('SELECT COUNT(key) FROM %s' % (self._table,)):
-            return row[0]
+        return self._db.execute('SELECT COUNT(key) FROM %s' % (self._table,)).fetchone()[0]
     
     def __iter__(self):
         for row in self._db.execute('SELECT key FROM %s' % (self._table,)):
@@ -32,7 +31,7 @@ class SQLiteDict(object):
         return list(self.iteritems())
     
     def __setitem__(self, key, value):
-        self._db.execute('INSERT INTO %s (key, value) VALUES (?, ?) ON CONFLICT REPLACE' % (self._table,), (buffer(key), buffer(value)))
+        self._db.execute('INSERT OR REPLACE INTO %s (key, value) VALUES (?, ?)' % (self._table,), (buffer(key), buffer(value)))
     
     def __getitem__(self, key):
         row = self._db.execute('SELECT value FROM %s WHERE key=?' % (self._table,), (buffer(key),)).fetchone()