diff options
author | kaiyou <pierre@jaury.eu> | 2018-04-14 12:27:16 +0200 |
---|---|---|
committer | kaiyou <pierre@jaury.eu> | 2018-04-14 12:27:16 +0200 |
commit | 041b41a825e456db180a89a9e4df6ea9f3d01c5b (patch) | |
tree | db669225768b3322fe4d63451fdd05799634599a /synapse/handlers/register.py | |
parent | Merge remote-tracking branch 'upstream/master' into feat-dockerfile (diff) | |
parent | Merge branch 'release-v0.27.0' of https://github.com/matrix-org/synapse (diff) | |
download | synapse-041b41a825e456db180a89a9e4df6ea9f3d01c5b.tar.xz |
Merge remote-tracking branch 'upstream/master' into feat-dockerfile
Diffstat (limited to 'synapse/handlers/register.py')
-rw-r--r-- | synapse/handlers/register.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index ed5939880a..dd03705279 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -24,7 +24,7 @@ from synapse.api.errors import ( from synapse.http.client import CaptchaServerHttpClient from synapse import types from synapse.types import UserID -from synapse.util.async import run_on_reactor +from synapse.util.async import run_on_reactor, Linearizer from synapse.util.threepids import check_3pid_allowed from ._base import BaseHandler @@ -46,6 +46,10 @@ class RegistrationHandler(BaseHandler): self.macaroon_gen = hs.get_macaroon_generator() + self._generate_user_id_linearizer = Linearizer( + name="_generate_user_id_linearizer", + ) + @defer.inlineCallbacks def check_username(self, localpart, guest_access_token=None, assigned_user_id=None): @@ -345,9 +349,11 @@ class RegistrationHandler(BaseHandler): @defer.inlineCallbacks def _generate_user_id(self, reseed=False): if reseed or self._next_generated_user_id is None: - self._next_generated_user_id = ( - yield self.store.find_next_generated_user_id_localpart() - ) + with (yield self._generate_user_id_linearizer.queue(())): + if reseed or self._next_generated_user_id is None: + self._next_generated_user_id = ( + yield self.store.find_next_generated_user_id_localpart() + ) id = self._next_generated_user_id self._next_generated_user_id += 1 |