Don't log exceptions for obviously incorrect stream tokens (#18139)

We log incorrect ones as we want to catch bugs where Synapse returns bad
tokens. However, sometimes clients just send tokens that are e.g. empty.

---------

Co-authored-by: Eric Eastwood <erice@element.io>
This commit is contained in:
Erik Johnston
2025-02-10 16:27:46 +01:00
committed by GitHub
parent deb09b3836
commit 4c84c9c4ad
2 changed files with 6 additions and 0 deletions

1
changelog.d/18139.misc Normal file
View File

@@ -0,0 +1 @@
Do not log at the exception-level when clients provide empty `since` token to `/sync` API.

View File

@@ -664,6 +664,11 @@ class RoomStreamToken(AbstractMultiWriterStreamToken):
@classmethod
async def parse(cls, store: "PurgeEventsStore", string: str) -> "RoomStreamToken":
# Check that it looks like a Synapse token first. We do this so that
# we don't log at the exception-level for obviously incorrect tokens.
if not string or string[0] not in ("s", "t", "m"):
raise SynapseError(400, f"Invalid room stream token {string:!r}")
try:
if string[0] == "s":
return cls(topological=None, stream=int(string[1:]))