bitbake: 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.

(Bitbake rev: 5709efc2ff1e36529bd28f49cd093ccfa7abff7f)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2013-08-28 16:06:10 +00:00
parent 5fba9d8c6c
commit 06d7664590
2 changed files with 4 additions and 4 deletions

View File

@ -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={}

View File

@ -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()