Also remove yield from within lock in the other generator

pull/4/merge
Erik Johnston 10 years ago
parent d2d61a8288
commit 50f96f256f
  1. 14
      synapse/storage/util/id_generators.py

@ -30,15 +30,13 @@ class IdGenerator(object):
@defer.inlineCallbacks
def get_next(self):
with self._lock:
if not self._next_id:
res = yield self.store._execute_and_decode(
"IdGenerator_%s" % (self.table,),
"SELECT MAX(%s) as mx FROM %s" % (self.column, self.table,)
)
self._next_id = (res and res[0] and res[0]["mx"]) or 1
if self._next_id is None:
yield self.store.runInteraction(
"IdGenerator_%s" % (self.table,),
self.get_next_txn,
)
with self._lock:
i = self._next_id
self._next_id += 1
defer.returnValue(i)

Loading…
Cancel
Save