diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py
index 51741d9095..12eed15865 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -105,6 +105,7 @@ class FederationHandler(BaseHandler):
self.hs = hs
+ self.clock = hs.get_clock()
self.store = hs.get_datastore() # type: synapse.storage.DataStore
self.federation_client = hs.get_federation_client()
self.state_handler = hs.get_state_handler()
@@ -1326,7 +1327,7 @@ class FederationHandler(BaseHandler):
except Exception:
# We're going to retry, but we should log the error
logger.exception("Error auto-accepting invite on attempt %d" % attempt)
- yield self.hs.get_clock().sleep(1)
+ yield self.clock.sleep(1)
if not joined:
logger.error("Giving up on trying to auto-accept invite: too many attempts")
diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py
index 18342fb675..147f8e1789 100644
--- a/synapse/handlers/room_member.py
+++ b/synapse/handlers/room_member.py
@@ -455,10 +455,11 @@ class RoomMemberHandler(object):
prev_events_and_hashes=prev_events_and_hashes,
content=content,
)
- logcontext.run_in_background(
- self._send_merged_user_invites,
- requester, room_id,
- )
+ if effective_membership_state == Membership.JOIN:
+ logcontext.run_in_background(
+ self._send_merged_user_invites,
+ requester, room_id,
+ )
defer.returnValue(res)
@defer.inlineCallbacks
@@ -479,12 +480,15 @@ class RoomMemberHandler(object):
if self.hs.is_mine(child) or child_id == requester.user.to_string():
# TODO: Handle auto-invite for local users (not a priority)
continue
- self.update_membership(
- requester=requester,
- target=child,
- room_id=room_id,
- action="invite",
- )
+ try:
+ yield self.update_membership(
+ requester=requester,
+ target=child,
+ room_id=room_id,
+ action="invite",
+ )
+ except Exception:
+ logger.exception("Failed to invite %s to %s" % (child_id, room_id))
@defer.inlineCallbacks
def send_membership_event(
|