diff mbox series

[v4,4/5] prserv: sync the database after each change

Message ID 20240423093739.364140-5-michael.opdenacker@bootlin.com
State New
Headers show
Series prserv: add support for an "upstream" server | expand

Commit Message

Michael Opdenacker April 23, 2024, 9:37 a.m. UTC
From: Michael Opdenacker <michael.opdenacker@bootlin.com>

This removes the need for a "dirty" flag and simplifies the code.

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Cc: Joshua Watt <JPEWhacker@gmail.com>
Cc: Tim Orling <ticotimo@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 lib/prserv/db.py   | 13 ++++---------
 lib/prserv/serv.py |  3 ---
 2 files changed, 4 insertions(+), 12 deletions(-)
diff mbox series

Patch

diff --git a/lib/prserv/db.py b/lib/prserv/db.py
index 8a613d106a..598f015138 100644
--- a/lib/prserv/db.py
+++ b/lib/prserv/db.py
@@ -37,7 +37,6 @@  class PRTable(object):
     def __init__(self, conn, table, read_only):
         self.conn = conn
         self.read_only = read_only
-        self.dirty = False
         self.table = table
 
         if self.read_only:
@@ -53,6 +52,7 @@  class PRTable(object):
                         checksum TEXT NOT NULL, \
                         value TEXT, \
                         PRIMARY KEY (version, pkgarch, checksum, value));" % self.table)
+            self.sync()
 
     def _execute(self, *query):
         """Execute a query, waiting to acquire a lock if necessary"""
@@ -71,11 +71,6 @@  class PRTable(object):
             self.conn.commit()
             self._execute("BEGIN EXCLUSIVE TRANSACTION")
 
-    def sync_if_dirty(self):
-        if self.dirty:
-            self.sync()
-            self.dirty = False
-
     def test_package(self, version, pkgarch):
         """Returns whether the specified package version is found in the database for the specified architecture"""
 
@@ -167,7 +162,7 @@  class PRTable(object):
         except sqlite3.IntegrityError as exc:
             logger.error(str(exc))
 
-        self.dirty = True
+        self.sync()
 
     def _get_value(self, version, pkgarch, checksum, history):
 
@@ -216,7 +211,7 @@  class PRTable(object):
             except sqlite3.IntegrityError as exc:
                 logger.error(str(exc))
 
-            self.dirty = True
+            self.sync()
 
             data = self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table,
                            (version, pkgarch, checksum))
@@ -242,7 +237,7 @@  class PRTable(object):
             except sqlite3.IntegrityError as exc:
                 logger.error(str(exc))
 
-        self.dirty = True
+        self.sync()
 
         data = self._execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=? AND value>=?;" % self.table,
                             (version, pkgarch, checksum, value))
diff --git a/lib/prserv/serv.py b/lib/prserv/serv.py
index b4447912a8..b39957f936 100644
--- a/lib/prserv/serv.py
+++ b/lib/prserv/serv.py
@@ -44,8 +44,6 @@  class PRServerClient(bb.asyncrpc.AsyncServerConnection):
         except:
             self.server.table.sync()
             raise
-        else:
-            self.server.table.sync_if_dirty()
 
     async def handle_test_pr(self, request):
         '''Finds the PR value corresponding to the request. If not found, returns None and doesn't insert a new value'''
@@ -233,7 +231,6 @@  class PRServer(bb.asyncrpc.AsyncServer):
         return tasks
 
     async def stop(self):
-        self.table.sync_if_dirty()
         self.db.disconnect()
         await super().stop()