diff mbox series

[bitbake-devel] hashserv: sqlite: Ensure sync propagates to database connections

Message ID 20231204160343.1373871-1-JPEWhacker@gmail.com
State New
Headers show
Series [bitbake-devel] hashserv: sqlite: Ensure sync propagates to database connections | expand

Commit Message

Joshua Watt Dec. 4, 2023, 4:03 p.m. UTC
When the sqlite database backend was restructured, the code to make the
databases run in WAL mode and to control if sync() is called was
accidentally dropped. This caused terrible database performance to the
point that server timeouts were occurring causing really slow builds.

Fix this by properly enabling WAL mode and setting the synchronous flag
as requested

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
 bitbake/lib/hashserv/sqlite.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/bitbake/lib/hashserv/sqlite.py b/bitbake/lib/hashserv/sqlite.py
index f65036be939..f93cb2c1dd9 100644
--- a/bitbake/lib/hashserv/sqlite.py
+++ b/bitbake/lib/hashserv/sqlite.py
@@ -109,11 +109,11 @@  class DatabaseEngine(object):
             )
 
     def connect(self, logger):
-        return Database(logger, self.dbname)
+        return Database(logger, self.dbname, self.sync)
 
 
 class Database(object):
-    def __init__(self, logger, dbname, sync=True):
+    def __init__(self, logger, dbname, sync):
         self.dbname = dbname
         self.logger = logger
 
@@ -121,6 +121,11 @@  class Database(object):
         self.db.row_factory = sqlite3.Row
 
         with closing(self.db.cursor()) as cursor:
+            cursor.execute("PRAGMA journal_mode = WAL")
+            cursor.execute(
+                "PRAGMA synchronous = %s" % ("NORMAL" if sync else "OFF")
+            )
+
             cursor.execute("SELECT sqlite_version()")
 
             version = []