summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2007-08-05 09:31:00 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2007-08-05 09:31:00 +0000
commitaf77227bcd6a492dbe4d13565701c4a30dd2c2db (patch)
treef0f1973411bffca9e7b7bef2ecb1737e1e0626db
parentd0d02c18bef23a2ad4c8873e9b6906b60ad324b1 (diff)
downloadbitbake-af77227bcd6a492dbe4d13565701c4a30dd2c2db.tar.gz
persist_data: Retry if database locked, update MANIFEST
-rw-r--r--MANIFEST1
-rw-r--r--lib/bb/persist_data.py18
2 files changed, 16 insertions, 3 deletions
diff --git a/MANIFEST b/MANIFEST
index a0e39c771..ae01faf8c 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -30,6 +30,7 @@ lib/bb/parse/__init__.py
lib/bb/parse/parse_py/__init__.py
lib/bb/parse/parse_py/BBHandler.py
lib/bb/parse/parse_py/ConfHandler.py
+lib/bb/persist_data.py
lib/bb/providers.py
lib/bb/runqueue.py
lib/bb/shell.py
diff --git a/lib/bb/persist_data.py b/lib/bb/persist_data.py
index 4df335a6a..0b88dadba 100644
--- a/lib/bb/persist_data.py
+++ b/lib/bb/persist_data.py
@@ -82,13 +82,25 @@ class PersistData:
for row in data:
rows = rows + 1
if rows:
- self.connection.execute("UPDATE %s SET value=? WHERE key=?;" % domain, [value, key])
+ self._execute("UPDATE %s SET value=? WHERE key=?;" % domain, [value, key])
else:
- self.connection.execute("INSERT into %s(key, value) values (?, ?);" % domain, [key, value])
+ self._execute("INSERT into %s(key, value) values (?, ?);" % domain, [key, value])
def delValue(self, domain, key):
"""
Deletes a key/value pair
"""
- self.connection.execute("DELETE from %s where key=?;" % domain, [key])
+ self._execute("DELETE from %s where key=?;" % domain, [key])
+
+ def _execute(self, *query):
+ while True:
+ try:
+ self.connection.execute(*query)
+ return
+ except sqlite3.OperationalError, e:
+ if 'database is locked' in str(e):
+ continue
+ raise
+
+