diff options
Diffstat (limited to 'bitbake/lib/prserv/db.py')
-rw-r--r-- | bitbake/lib/prserv/db.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/bitbake/lib/prserv/db.py b/bitbake/lib/prserv/db.py index 7bc1980099..b7190bad01 100644 --- a/bitbake/lib/prserv/db.py +++ b/bitbake/lib/prserv/db.py | |||
@@ -2,6 +2,7 @@ import logging | |||
2 | import os.path | 2 | import os.path |
3 | import errno | 3 | import errno |
4 | import prserv | 4 | import prserv |
5 | import time | ||
5 | 6 | ||
6 | try: | 7 | try: |
7 | import sqlite3 | 8 | import sqlite3 |
@@ -32,13 +33,13 @@ class PRTable(object): | |||
32 | 33 | ||
33 | def _execute(self, *query): | 34 | def _execute(self, *query): |
34 | """Execute a query, waiting to acquire a lock if necessary""" | 35 | """Execute a query, waiting to acquire a lock if necessary""" |
35 | count = 0 | 36 | start = time.time() |
37 | end = start + 20 | ||
36 | while True: | 38 | while True: |
37 | try: | 39 | try: |
38 | return self.conn.execute(*query) | 40 | return self.conn.execute(*query) |
39 | except sqlite3.OperationalError as exc: | 41 | except sqlite3.OperationalError as exc: |
40 | if 'is locked' in str(exc) and count < 500: | 42 | if 'is locked' in str(exc) and end > time.time(): |
41 | count = count + 1 | ||
42 | continue | 43 | continue |
43 | raise exc | 44 | raise exc |
44 | 45 | ||