[oe-commits] [bitbake] 01/01: hashserv: Drop handler thread
git at git.openembedded.org
git at git.openembedded.org
Mon Sep 16 22:05:05 UTC 2019
This is an automated email from the git hooks/post-receive script.
rpurdie pushed a commit to branch master-next
in repository bitbake.
commit 9cb3d2ecd8bbf059cd4d6cc36ac2825030c248c9
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Tue Sep 10 15:08:00 2019 +0100
hashserv: Drop handler thread
With performance measurements we've proven the handler thread is slower than not
bothering with threading so drop it.
There was also a bug in this code where the database was being repeatedly being
reopened/closed.
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
lib/hashserv/__init__.py | 52 +++++-------------------------------------------
1 file changed, 5 insertions(+), 47 deletions(-)
diff --git a/lib/hashserv/__init__.py b/lib/hashserv/__init__.py
index eb03c32..8a7c6ac 100644
--- a/lib/hashserv/__init__.py
+++ b/lib/hashserv/__init__.py
@@ -24,17 +24,8 @@ class HashEquivalenceServer(BaseHTTPRequestHandler):
def log_message(self, f, *args):
logger.debug(f, *args)
- def opendb(self):
- self.db = sqlite3.connect(self.dbname)
- self.db.row_factory = sqlite3.Row
- self.db.execute("PRAGMA synchronous = OFF;")
- self.db.execute("PRAGMA journal_mode = MEMORY;")
-
def do_GET(self):
try:
- if not self.db:
- self.opendb()
-
p = urllib.parse.urlparse(self.path)
if p.path != self.prefix + '/v1/equivalent':
@@ -67,9 +58,6 @@ class HashEquivalenceServer(BaseHTTPRequestHandler):
def do_POST(self):
try:
- if not self.db:
- self.opendb()
-
p = urllib.parse.urlparse(self.path)
if p.path != self.prefix + '/v1/equivalent':
@@ -141,15 +129,8 @@ class HashEquivalenceServer(BaseHTTPRequestHandler):
self.send_error(400, explain=traceback.format_exc())
return
-class ThreadedHTTPServer(HTTPServer):
- quit = False
-
+class HashHTTPServer(HTTPServer):
def serve_forever(self):
- self.requestqueue = queue.Queue()
- self.handlerthread = threading.Thread(target=self.process_request_thread)
- self.handlerthread.daemon = False
-
- self.handlerthread.start()
signal.signal(signal.SIGTERM, self.sigterm_exception)
super().serve_forever()
@@ -163,40 +144,17 @@ class ThreadedHTTPServer(HTTPServer):
HTTPServer.server_bind(self)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
- def process_request_thread(self):
- while not self.quit:
- try:
- (request, client_address) = self.requestqueue.get(True)
- except queue.Empty:
- continue
- if request is None:
- continue
- try:
- self.finish_request(request, client_address)
- except Exception:
- self.handle_error(request, client_address)
- finally:
- self.shutdown_request(request)
- os._exit(0)
-
- def process_request(self, request, client_address):
- self.requestqueue.put((request, client_address))
-
- def server_close(self):
- super().server_close()
- self.quit = True
- self.requestqueue.put((None, None))
- self.handlerthread.join()
-
def create_server(addr, dbname, prefix=''):
class Handler(HashEquivalenceServer):
pass
db = sqlite3.connect(dbname)
db.row_factory = sqlite3.Row
+ db.execute("PRAGMA synchronous = OFF;")
+ db.execute("PRAGMA journal_mode = MEMORY;")
Handler.prefix = prefix
- Handler.db = None
+ Handler.db = db
Handler.dbname = dbname
with contextlib.closing(db.cursor()) as cursor:
@@ -223,7 +181,7 @@ def create_server(addr, dbname, prefix=''):
cursor.execute('CREATE INDEX IF NOT EXISTS taskhash_lookup ON tasks_v2 (method, taskhash)')
cursor.execute('CREATE INDEX IF NOT EXISTS outhash_lookup ON tasks_v2 (method, outhash)')
- ret = ThreadedHTTPServer(addr, Handler)
+ ret = HashHTTPServer(addr, Handler)
logger.info('Starting server on %s\n', ret.server_port)
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list