summaryrefslogtreecommitdiffstats
path: root/lib/bb/persist_data.py
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
commit1c94534d7e7c7d5b521e373cead522b8c753ade8 (patch)
treee2c2a72469c4af3d7a547bd2b1dd543c4e7da28b /lib/bb/persist_data.py
parent2aad7b5c742dd4c1ca299390b517258e2bf6d344 (diff)
downloadbitbake-contrib-1c94534d7e7c7d5b521e373cead522b8c753ade8.tar.gz
persist_data: Retry if database locked, update MANIFEST
Diffstat (limited to 'lib/bb/persist_data.py')
-rw-r--r--lib/bb/persist_data.py18
1 files changed, 15 insertions, 3 deletions
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
+
+