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

Fix rejection of invites to unreachable servers #2145

Merged
merged 5 commits into from
Apr 24, 2017

Conversation

richvdh
Copy link
Member

@richvdh richvdh commented Apr 21, 2017

When we get a 500 from a remote server, or it is unreachable, mark the invite as locally rejected.

I'm slightly undecided as to whether this is a sensible thing to do; the problem is, of course, that if the remote server was having an off day rather than being permanently out of service, we're going to end up with the room being out of sync. Still, I think that's better than the current situation of not being able to do anything with an invite from an HS which has since disappeared.

This fixes #761

The documentation on get_json has been wrong ever since the very first commit
to synapse...
inline `reject_remote_invite`, which only existed to make tracing the callflow
more difficult.
The logic for marking invites as locally rejected was all well and good, but
didn't happen when the remote server returned a 500, or wasn't reachable, or
had no DNS, or whatever.

Just expand the except clause to catch everything.

Fixes #761.
The `except SynapseError` clauses were pointless because the wrapped functions
would never throw a `SynapseError` (they either throw a `CodeMessageException`
or a `RuntimeError`).

The `except CodeMessageException` is now also pointless because the caller
treats all exceptions equally, so we may as well just throw the
`CodeMessageException`.
When we're rejecting invites, ignore the backoff data, so that we have a better
chance of not getting the room out of sync.
@richvdh
Copy link
Member Author

richvdh commented Apr 21, 2017

Tests at matrix-org/sytest#353

Copy link
Member

@erikjohnston erikjohnston left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@erikjohnston
Copy link
Member

I'm surprised that the merged PR tests are fine and the commit ones aren't? Given the commit ones should be using the sytest branch of your PR

@richvdh
Copy link
Member Author

richvdh commented Apr 24, 2017

retest this please

@richvdh
Copy link
Member Author

richvdh commented Apr 24, 2017

except that doesn't trigger the right builds

@richvdh
Copy link
Member Author

richvdh commented Apr 24, 2017

the fails seem reproducible so am investigating further

@richvdh
Copy link
Member Author

richvdh commented Apr 24, 2017

right; the problem was in the tests. Now fixed in matrix-org/sytest@a7e9d38.

Merging this since it seems fine.

@richvdh richvdh merged commit 30f7bfa into develop Apr 24, 2017
@richvdh richvdh added the A-Stuck-Invite Incoming invitations that won't go away label May 3, 2017
psaavedra added a commit to psaavedra/synapse that referenced this pull request May 19, 2017
Changes in synapse v0.21.0 (2017-05-18)
=======================================

No changes since v0.21.0-rc3

Changes in synapse v0.21.0-rc3 (2017-05-17)
===========================================

Features:

* Add per user rate-limiting overrides (PR matrix-org#2208)
* Add config option to limit maximum number of events requested by ``/sync``
  and ``/messages`` (PR matrix-org#2221) Thanks to @psaavedra!

Changes:

* Various small performance fixes (PR matrix-org#2201, matrix-org#2202, matrix-org#2224, matrix-org#2226, matrix-org#2227, matrix-org#2228,
  matrix-org#2229)
* Update username availability checker API (PR matrix-org#2209, matrix-org#2213)
* When purging, don't de-delta state groups we're about to delete (PR matrix-org#2214)
* Documentation to check synapse version (PR matrix-org#2215) Thanks to @hamber-dick!
* Add an index to event_search to speed up purge history API (PR matrix-org#2218)

Bug fixes:

* Fix API to allow clients to upload one-time-keys with new sigs (PR matrix-org#2206)

Changes in synapse v0.21.0-rc2 (2017-05-08)
===========================================

Changes:

* Always mark remotes as up if we receive a signed request from them (PR matrix-org#2190)

Bug fixes:

* Fix bug where users got pushed for rooms they had muted (PR matrix-org#2200)

Changes in synapse v0.21.0-rc1 (2017-05-08)
===========================================

Features:

* Add username availability checker API (PR matrix-org#2183)
* Add read marker API (PR matrix-org#2120)

Changes:

* Enable guest access for the 3pl/3pid APIs (PR matrix-org#1986)
* Add setting to support TURN for guests (PR matrix-org#2011)
* Various performance improvements (PR matrix-org#2075, matrix-org#2076, matrix-org#2080, matrix-org#2083, matrix-org#2108,
  matrix-org#2158, matrix-org#2176, matrix-org#2185)
* Make synctl a bit more user friendly (PR matrix-org#2078, matrix-org#2127) Thanks @APwhitehat!
* Replace HTTP replication with TCP replication (PR matrix-org#2082, matrix-org#2097, matrix-org#2098,
  matrix-org#2099, matrix-org#2103, matrix-org#2014, matrix-org#2016, matrix-org#2115, matrix-org#2116, matrix-org#2117)
* Support authenticated SMTP (PR matrix-org#2102) Thanks @DanielDent!
* Add a counter metric for successfully-sent transactions (PR matrix-org#2121)
* Propagate errors sensibly from proxied IS requests (PR matrix-org#2147)
* Add more granular event send metrics (PR matrix-org#2178)

Bug fixes:

* Fix nuke-room script to work with current schema (PR matrix-org#1927) Thanks
  @zuckschwerdt!
* Fix db port script to not assume postgres tables are in the public schema
  (PR matrix-org#2024) Thanks @jerrykan!
* Fix getting latest device IP for user with no devices (PR matrix-org#2118)
* Fix rejection of invites to unreachable servers (PR matrix-org#2145)
* Fix code for reporting old verify keys in synapse (PR matrix-org#2156)
* Fix invite state to always include all events (PR matrix-org#2163)
* Fix bug where synapse would always fetch state for any missing event (PR matrix-org#2170)
* Fix a leak with timed out HTTP connections (PR matrix-org#2180)
* Fix bug where we didn't time out HTTP requests to ASes  (PR matrix-org#2192)

Docs:

* Clarify doc for SQLite to PostgreSQL port (PR matrix-org#1961) Thanks @benhylau!
* Fix typo in synctl help (PR matrix-org#2107) Thanks @HarHarLinks!
* ``web_client_location`` documentation fix (PR matrix-org#2131) Thanks @matthewjwolff!
* Update README.rst with FreeBSD changes (PR matrix-org#2132) Thanks @feld!
* Clarify setting up metrics (PR matrix-org#2149) Thanks @encks!
@heyakyra
Copy link

i still have an invite that i cannot accept or reject because the room no longer exists

@richvdh richvdh deleted the rav/reject_invite_to_unreachable_server branch October 9, 2017 17:10
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A-Stuck-Invite Incoming invitations that won't go away
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants