Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Merge pull request #5790 from matrix-org/erikj/groups_request_errors
Browse files Browse the repository at this point in the history
Handle RequestSendFailed exception correctly in more places.
  • Loading branch information
erikjohnston authored Aug 1, 2019
2 parents ad167c3 + f92d05e commit 0f632f3
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 32 deletions.
1 change: 1 addition & 0 deletions changelog.d/5790.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove some spurious exceptions from the logs where we failed to talk to a remote server.
3 changes: 3 additions & 0 deletions synapse/handlers/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -978,6 +978,9 @@ def try_backfill(domains):
except NotRetryingDestination as e:
logger.info(str(e))
continue
except RequestSendFailed as e:
logger.info("Falied to get backfill from %s because %s", dom, e)
continue
except FederationDeniedError as e:
logger.info(e)
continue
Expand Down
89 changes: 57 additions & 32 deletions synapse/handlers/groups_local.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,12 @@ def get_group_summary(self, group_id, requester_user_id):
group_id, requester_user_id
)
else:
res = yield self.transport_client.get_group_summary(
get_domain_from_id(group_id), group_id, requester_user_id
)
try:
res = yield self.transport_client.get_group_summary(
get_domain_from_id(group_id), group_id, requester_user_id
)
except RequestSendFailed:
raise SynapseError(502, "Failed to contact group server")

group_server_name = get_domain_from_id(group_id)

Expand Down Expand Up @@ -183,9 +186,12 @@ def create_group(self, group_id, user_id, content):

content["user_profile"] = yield self.profile_handler.get_profile(user_id)

res = yield self.transport_client.create_group(
get_domain_from_id(group_id), group_id, user_id, content
)
try:
res = yield self.transport_client.create_group(
get_domain_from_id(group_id), group_id, user_id, content
)
except RequestSendFailed:
raise SynapseError(502, "Failed to contact group server")

remote_attestation = res["attestation"]
yield self.attestations.verify_attestation(
Expand Down Expand Up @@ -221,9 +227,12 @@ def get_users_in_group(self, group_id, requester_user_id):

group_server_name = get_domain_from_id(group_id)

res = yield self.transport_client.get_users_in_group(
get_domain_from_id(group_id), group_id, requester_user_id
)
try:
res = yield self.transport_client.get_users_in_group(
get_domain_from_id(group_id), group_id, requester_user_id
)
except RequestSendFailed:
raise SynapseError(502, "Failed to contact group server")

chunk = res["chunk"]
valid_entries = []
Expand Down Expand Up @@ -258,9 +267,12 @@ def join_group(self, group_id, user_id, content):
local_attestation = self.attestations.create_attestation(group_id, user_id)
content["attestation"] = local_attestation

res = yield self.transport_client.join_group(
get_domain_from_id(group_id), group_id, user_id, content
)
try:
res = yield self.transport_client.join_group(
get_domain_from_id(group_id), group_id, user_id, content
)
except RequestSendFailed:
raise SynapseError(502, "Failed to contact group server")

remote_attestation = res["attestation"]

Expand Down Expand Up @@ -299,9 +311,12 @@ def accept_invite(self, group_id, user_id, content):
local_attestation = self.attestations.create_attestation(group_id, user_id)
content["attestation"] = local_attestation

res = yield self.transport_client.accept_group_invite(
get_domain_from_id(group_id), group_id, user_id, content
)
try:
res = yield self.transport_client.accept_group_invite(
get_domain_from_id(group_id), group_id, user_id, content
)
except RequestSendFailed:
raise SynapseError(502, "Failed to contact group server")

remote_attestation = res["attestation"]

Expand Down Expand Up @@ -338,13 +353,16 @@ def invite(self, group_id, user_id, requester_user_id, config):
group_id, user_id, requester_user_id, content
)
else:
res = yield self.transport_client.invite_to_group(
get_domain_from_id(group_id),
group_id,
user_id,
requester_user_id,
content,
)
try:
res = yield self.transport_client.invite_to_group(
get_domain_from_id(group_id),
group_id,
user_id,
requester_user_id,
content,
)
except RequestSendFailed:
raise SynapseError(502, "Failed to contact group server")

return res

Expand Down Expand Up @@ -398,13 +416,16 @@ def remove_user_from_group(self, group_id, user_id, requester_user_id, content):
)
else:
content["requester_user_id"] = requester_user_id
res = yield self.transport_client.remove_user_from_group(
get_domain_from_id(group_id),
group_id,
requester_user_id,
user_id,
content,
)
try:
res = yield self.transport_client.remove_user_from_group(
get_domain_from_id(group_id),
group_id,
requester_user_id,
user_id,
content,
)
except RequestSendFailed:
raise SynapseError(502, "Failed to contact group server")

return res

Expand Down Expand Up @@ -435,9 +456,13 @@ def get_publicised_groups_for_user(self, user_id):

return {"groups": result}
else:
bulk_result = yield self.transport_client.bulk_get_publicised_groups(
get_domain_from_id(user_id), [user_id]
)
try:
bulk_result = yield self.transport_client.bulk_get_publicised_groups(
get_domain_from_id(user_id), [user_id]
)
except RequestSendFailed:
raise SynapseError(502, "Failed to contact group server")

result = bulk_result.get("users", {}).get(user_id)
# TODO: Verify attestations
return {"groups": result}
Expand Down

0 comments on commit 0f632f3

Please sign in to comment.