Add a wait

This commit is contained in:
Erik Johnston 2015-05-15 11:35:04 +01:00
parent 372d4c6d7b
commit aa32bd38e4
2 changed files with 12 additions and 3 deletions

View file

@ -502,6 +502,7 @@ class EventsStore(SQLBaseStore):
def _do_fetch(self, conn):
event_list = []
i = 0
while True:
try:
logger.debug("do_fetch getting lock")
@ -510,8 +511,14 @@ class EventsStore(SQLBaseStore):
event_list = self._event_fetch_list
self._event_fetch_list = []
if not event_list:
self._event_fetch_ongoing -= 1
return
if self.database_engine.single_threaded or i > 5:
self._event_fetch_ongoing -= 1
return
else:
self._event_fetch_lock.wait(0.1)
i += 1
continue
i = 0
event_id_lists = zip(*event_list)[0]
event_ids = [
@ -566,6 +573,8 @@ class EventsStore(SQLBaseStore):
(events, events_d)
)
self._event_fetch_lock.notify_all()
if self._event_fetch_ongoing < 1:
self._event_fetch_ongoing += 1
should_start = True