Count and loop

This commit is contained in:
Erik Johnston 2015-05-14 15:40:21 +01:00
parent 96c5b9f87c
commit 142934084a
2 changed files with 32 additions and 34 deletions

View File

@ -301,7 +301,7 @@ class SQLBaseStore(object):
self._event_fetch_lock = threading.Lock() self._event_fetch_lock = threading.Lock()
self._event_fetch_list = [] self._event_fetch_list = []
self._event_fetch_ongoing = False self._event_fetch_ongoing = 0
self.database_engine = hs.database_engine self.database_engine = hs.database_engine

View File

@ -506,6 +506,7 @@ class EventsStore(SQLBaseStore):
def do_fetch(txn): def do_fetch(txn):
event_list = [] event_list = []
while True:
try: try:
with self._event_fetch_lock: with self._event_fetch_lock:
event_list = self._event_fetch_list event_list = self._event_fetch_list
@ -538,9 +539,6 @@ class EventsStore(SQLBaseStore):
reactor.callFromThread(d.errback, e) reactor.callFromThread(d.errback, e)
except: except:
pass pass
finally:
with self._event_fetch_lock:
self._event_fetch_ongoing = False
def cb(rows): def cb(rows):
return defer.gatherResults([ return defer.gatherResults([
@ -561,12 +559,12 @@ class EventsStore(SQLBaseStore):
(events, d) (events, d)
) )
if not self._event_fetch_ongoing: if self._event_fetch_ongoing < 3:
self._event_fetch_ongoing += 1
self.runInteraction( self.runInteraction(
"do_fetch", "do_fetch",
do_fetch do_fetch
) )
self._event_fetch_ongoing = True
res = yield d res = yield d