From 4e55f7821786a59c2cd7dbd8bfa2a22f5f196e99 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 8 Sep 2013 09:45:54 +0000 Subject: [PATCH] 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 --- lib/prserv/db.py | 4 ++++ lib/prserv/serv.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/prserv/db.py b/lib/prserv/db.py index 559935544af..86eafe338c4 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 a9c7ed104c1..7864594bb6c 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 -- 2.47.3