]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
persist_data: Add back code to retry in the case of locked database errors
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 8 Jun 2011 19:25:12 +0000 (20:25 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 9 Jun 2011 13:53:23 +0000 (14:53 +0100)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/persist_data.py

index 03adc7cc53dd99bbdd58f496c4724ebfe5f21717..551b58a2a90e60a70938bb5277e885a2c2574a07 100644 (file)
@@ -55,7 +55,16 @@ class SQLTable(collections.MutableMapping):
                       % table)
 
     def _execute(self, *query):
-        return self.cursor.execute(*query)
+        """Execute a query, waiting to acquire a lock if necessary"""
+        count = 0
+        while True:
+            try:
+                return self.cursor.execute(*query)
+            except sqlite3.OperationalError as exc:
+                if 'database is locked' in str(exc) and count < 500:
+                    count = count + 1
+                    continue
+                raise
 
     def __enter__(self):
         self.cursor.__enter__()