diff options
author | Erik Johnston <erikj@element.io> | 2024-08-06 10:39:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-06 10:39:11 +0100 |
commit | c270355349d589e5e8634f0ca8049a16ec7ea4a3 (patch) | |
tree | b6938a7c0b1e208f942563191aa6072ec4df15fb /synapse/api | |
parent | Sliding Sync: Easier to understand timeline assertions in tests (#17511) (diff) | |
download | synapse-c270355349d589e5e8634f0ca8049a16ec7ea4a3.tar.xz |
SS: Reset connection if token is unrecognized (#17529)
This triggers the client to start a new sliding sync connection. If we don't do this and the client asks for the full range of rooms, we end up sending down all rooms and their state from scratch (which can be very slow) This causes things like https://github.com/element-hq/element-x-ios/issues/3115 after we restart the server --------- Co-authored-by: Eric Eastwood <eric.eastwood@beta.gouv.fr>
Diffstat (limited to 'synapse/api')
-rw-r--r-- | synapse/api/errors.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/synapse/api/errors.py b/synapse/api/errors.py index dd4a1ae706..99fc7eab54 100644 --- a/synapse/api/errors.py +++ b/synapse/api/errors.py @@ -128,6 +128,10 @@ class Codes(str, Enum): # MSC2677 DUPLICATE_ANNOTATION = "M_DUPLICATE_ANNOTATION" + # MSC3575 we are telling the client they need to reset their sliding sync + # connection. + UNKNOWN_POS = "M_UNKNOWN_POS" + class CodeMessageException(RuntimeError): """An exception with integer code, a message string attributes and optional headers. @@ -847,3 +851,17 @@ class PartialStateConflictError(SynapseError): msg=PartialStateConflictError.message(), errcode=Codes.UNKNOWN, ) + + +class SlidingSyncUnknownPosition(SynapseError): + """An error that Synapse can return to signal to the client to expire their + sliding sync connection (i.e. send a new request without a `?since=` + param). + """ + + def __init__(self) -> None: + super().__init__( + HTTPStatus.BAD_REQUEST, + msg="Unknown position", + errcode=Codes.UNKNOWN_POS, + ) |