aboutsummaryrefslogtreecommitdiffstats
path: root/lib/prserv
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-08 09:45:54 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-08 10:46:41 +0100
commit4e55f7821786a59c2cd7dbd8bfa2a22f5f196e99 (patch)
tree2f32ae03f3ca838edfffca0a49e8b7296f3347d3 /lib/prserv
parentf5f479bbe9b74622cd54c8d6ba8786661a3ae3e6 (diff)
downloadbitbake-4e55f7821786a59c2cd7dbd8bfa2a22f5f196e99.tar.gz
prserv: Ensure data is committed
In exclusive mode, we need to complete the transaction for writes to make it to the database. Therefore add sync calls to ensure this happens. Autocommit mode is significantly (100 times) slower so caching the data is of significant benefit. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/prserv')
-rw-r--r--lib/prserv/db.py4
-rw-r--r--lib/prserv/serv.py3
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/prserv/db.py b/lib/prserv/db.py
index 559935544..86eafe338 100644
--- a/lib/prserv/db.py
+++ b/lib/prserv/db.py
@@ -43,6 +43,10 @@ class PRTable(object):
continue
raise exc
+ def sync(self):
+ self.conn.commit()
+ self._execute("BEGIN EXCLUSIVE TRANSACTION")
+
def _getValueHist(self, version, pkgarch, checksum):
data=self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table,
(version, pkgarch, checksum))
diff --git a/lib/prserv/serv.py b/lib/prserv/serv.py
index a9c7ed104..7864594bb 100644
--- a/lib/prserv/serv.py
+++ b/lib/prserv/serv.py
@@ -74,7 +74,7 @@ class PRServer(SimpleXMLRPCServer):
except:
self.handle_error(request, client_address)
self.shutdown_request(request)
-
+ self.table.sync()
def process_request(self, request, client_address):
self.requestqueue.put((request, client_address))
@@ -120,6 +120,7 @@ class PRServer(SimpleXMLRPCServer):
while not self.quit:
self.handle_request()
+ self.table.sync()
logger.info("PRServer: stopping...")
self.server_close()
return