From 1c94534d7e7c7d5b521e373cead522b8c753ade8 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 5 Aug 2007 09:31:00 +0000 Subject: persist_data: Retry if database locked, update MANIFEST --- lib/bb/persist_data.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'lib/bb/persist_data.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 + + -- cgit 1.2.3-korg