Don't regenerate numeric user ID if registration fails.

This causes huge amounts of DB IO if registrations start to fail e.g.
because the DB is struggling with IO.
pull/6161/head
Erik Johnston 2019-10-03 17:33:54 +01:00
parent 6018bec919
commit 693156aaf4
1 changed files with 4 additions and 4 deletions

View File

@ -220,7 +220,7 @@ class RegistrationHandler(BaseHandler):
attempts = 0
user = None
while not user:
localpart = yield self._generate_user_id(attempts > 0)
localpart = yield self._generate_user_id()
user = UserID(localpart, self.hs.hostname)
user_id = user.to_string()
yield self.check_user_id_not_appservice_exclusive(user_id)
@ -379,10 +379,10 @@ class RegistrationHandler(BaseHandler):
)
@defer.inlineCallbacks
def _generate_user_id(self, reseed=False):
if reseed or self._next_generated_user_id is None:
def _generate_user_id(self):
if self._next_generated_user_id is None:
with (yield self._generate_user_id_linearizer.queue(())):
if reseed or self._next_generated_user_id is None:
if self._next_generated_user_id is None:
self._next_generated_user_id = (
yield self.store.find_next_generated_user_id_localpart()
)