diff --git a/changelog.d/4344.bugfix b/changelog.d/4344.bugfix
new file mode 100644
index 0000000000..cf9a873db5
--- /dev/null
+++ b/changelog.d/4344.bugfix
@@ -0,0 +1 @@
+Fix synchrotron exploding due to being unable to access is_support_user in storage layer
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py
index 10c3b9757f..c9e11c3135 100644
--- a/synapse/storage/registration.py
+++ b/synapse/storage/registration.py
@@ -114,6 +114,31 @@ class RegistrationWorkerStore(SQLBaseStore):
return None
+ @cachedInlineCallbacks()
+ def is_support_user(self, user_id):
+ """Determines if the user is of type UserTypes.SUPPORT
+
+ Args:
+ user_id (str): user id to test
+
+ Returns:
+ Deferred[bool]: True if user is of type UserTypes.SUPPORT
+ """
+ res = yield self.runInteraction(
+ "is_support_user", self.is_support_user_txn, user_id
+ )
+ defer.returnValue(res)
+
+ def is_support_user_txn(self, txn, user_id):
+ res = self._simple_select_one_onecol_txn(
+ txn=txn,
+ table="users",
+ keyvalues={"name": user_id},
+ retcol="user_type",
+ allow_none=True,
+ )
+ return True if res == UserTypes.SUPPORT else False
+
class RegistrationStore(RegistrationWorkerStore,
background_updates.BackgroundUpdateStore):
@@ -465,31 +490,6 @@ class RegistrationStore(RegistrationWorkerStore,
defer.returnValue(res if res else False)
- @cachedInlineCallbacks()
- def is_support_user(self, user_id):
- """Determines if the user is of type UserTypes.SUPPORT
-
- Args:
- user_id (str): user id to test
-
- Returns:
- Deferred[bool]: True if user is of type UserTypes.SUPPORT
- """
- res = yield self.runInteraction(
- "is_support_user", self.is_support_user_txn, user_id
- )
- defer.returnValue(res)
-
- def is_support_user_txn(self, txn, user_id):
- res = self._simple_select_one_onecol_txn(
- txn=txn,
- table="users",
- keyvalues={"name": user_id},
- retcol="user_type",
- allow_none=True,
- )
- return True if res == UserTypes.SUPPORT else False
-
@defer.inlineCallbacks
def user_add_threepid(self, user_id, medium, address, validated_at, added_at):
yield self._simple_upsert("user_threepids", {
|