From 5709efc2ff1e36529bd28f49cd093ccfa7abff7f Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 28 Aug 2013 16:06:10 +0000 Subject: [PATCH] prserv/db: Threading fixes Enabling threading for the PRServer causes a number of issues. Firstly is the obtuse error: sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type which is due to the class not being derived from object. See: http://docs.python.org/2/library/sqlite3.html#registering-an-adapter-callable Secondly, we want to enable multithreadded access to the database so we do this when we open it. This opens the way up to multithreading the PR server. Signed-off-by: Richard Purdie --- lib/prserv/db.py | 4 ++-- lib/prserv/serv.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/prserv/db.py b/lib/prserv/db.py index 9d8e9db9f26..7d74327c556 100644 --- a/lib/prserv/db.py +++ b/lib/prserv/db.py @@ -14,7 +14,7 @@ sqlversion = sqlite3.sqlite_version_info if sqlversion[0] < 3 or (sqlversion[0] == 3 and sqlversion[1] < 3): raise Exception("sqlite3 version 3.3.0 or later is required.") -class PRTable(): +class PRTable(object): def __init__(self, conn, table, nohist): self.conn = conn self.nohist = nohist @@ -223,7 +223,7 @@ class PRData(object): except OSError as e: if e.errno != errno.EEXIST: raise e - self.connection=sqlite3.connect(self.filename, isolation_level="DEFERRED") + self.connection=sqlite3.connect(self.filename, isolation_level="DEFERRED", check_same_thread = False) self.connection.row_factory=sqlite3.Row self._tables={} diff --git a/lib/prserv/serv.py b/lib/prserv/serv.py index 6d0c7188eec..d6f3f44b047 100644 --- a/lib/prserv/serv.py +++ b/lib/prserv/serv.py @@ -165,7 +165,7 @@ class PRServer(SimpleXMLRPCServer): self.delpid() os._exit(0) -class PRServSingleton(): +class PRServSingleton(object): def __init__(self, dbfile, logfile, interface): self.dbfile = dbfile self.logfile = logfile @@ -182,7 +182,7 @@ class PRServSingleton(): def getinfo(self): return (self.host, self.port) -class PRServerConnection(): +class PRServerConnection(object): def __init__(self, host, port): if is_local_special(host, port): host, port = singleton.getinfo() -- 2.47.3