diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py
index f1bf81ed7d1df32d0eb31934b9bfe99fe262900a..dd03705279a232700fac48349151a06a3e6c870c 100644
--- a/synapse/handlers/register.py
+++ b/synapse/handlers/register.py
@@ -350,9 +350,10 @@ class RegistrationHandler(BaseHandler):
     def _generate_user_id(self, reseed=False):
         if reseed or self._next_generated_user_id is None:
             with (yield self._generate_user_id_linearizer.queue(())):
-                self._next_generated_user_id = (
-                    yield self.store.find_next_generated_user_id_localpart()
-                )
+                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