diff --git a/synapse/storage/profile.py b/synapse/storage/profile.py
index 484ad59b62..4e7b7c253b 100644
--- a/synapse/storage/profile.py
+++ b/synapse/storage/profile.py
@@ -16,6 +16,7 @@
from twisted.internet import defer
from synapse.storage.roommember import ProfileInfo
+from synapse.api.errors import StoreError
from ._base import SQLBaseStore
@@ -28,16 +29,28 @@ class ProfileStore(SQLBaseStore):
desc="create_profile",
)
+ @defer.inlineCallbacks
def get_profileinfo(self, user_localpart):
- profile = self._simple_select_one(
- table="profiles",
- keyvalues={"user_id": user_localpart},
- retcols=("displayname", "avatar_url"),
- desc="get_profileinfo",
- )
- return ProfileInfo(
- avatar_url=profile.avatar_url,
- displayname=profile.displayname,
+ try:
+ profile = yield self._simple_select_one(
+ table="profiles",
+ keyvalues={"user_id": user_localpart},
+ retcols=("displayname", "avatar_url"),
+ desc="get_profileinfo",
+ )
+ except StoreError, e:
+ if e.code == 404:
+ # no match
+ defer.returnValue(ProfileInfo(None, None))
+ return
+ else:
+ raise
+
+ defer.returnValue(
+ ProfileInfo(
+ avatar_url=profile['avatar_url'],
+ display_name=profile['displayname'],
+ )
)
def get_profile_displayname(self, user_localpart):
|