From 89e8fd3d3ac2207087e6462b45a398d1ff00378f Mon Sep 17 00:00:00 2001 From: d9xr92 <46283343+antidepressant044@users.noreply.github.com> Date: Sat, 23 Nov 2019 16:22:36 +0400 Subject: [PATCH] potential fix for #2323 (#2324) * potential fix for #2323 * Update DbCursor.py * replaced RLock with Lock --- src/Db/DbCursor.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Db/DbCursor.py b/src/Db/DbCursor.py index 91eaa313..07639130 100644 --- a/src/Db/DbCursor.py +++ b/src/Db/DbCursor.py @@ -1,6 +1,7 @@ import time import re import gevent +from gevent._threading import Lock from util import helper @@ -14,6 +15,7 @@ class DbCursor: self.db = db self.cursor = conn.cursor() self.logging = False + self.lock = Lock() def quoteValue(self, value): if type(value) is int: @@ -98,15 +100,19 @@ class DbCursor: query, params = self.parseQuery(query, params) s = time.time() - - if params: # Query has parameters - res = self.cursor.execute(query, params) - if self.logging: - self.db.log.debug(query + " " + str(params) + " (Done in %.4f)" % (time.time() - s)) - else: - res = self.cursor.execute(query) - if self.logging: - self.db.log.debug(query + " (Done in %.4f)" % (time.time() - s)) + + try: + self.lock.acquire(True) + if params: # Query has parameters + res = self.cursor.execute(query, params) + if self.logging: + self.db.log.debug(query + " " + str(params) + " (Done in %.4f)" % (time.time() - s)) + else: + res = self.cursor.execute(query) + if self.logging: + self.db.log.debug(query + " (Done in %.4f)" % (time.time() - s)) + finally: + self.lock.release() # Log query stats if self.db.collect_stats: