Open andreidiaconescu opened 2 years ago
this looks like a bug. any help on this please ?
hello, any guidance on this please ?
To summarise the report: the filter
{filter: "{"room": {"rooms": ["!OMulzyGFCfueIWFHSU:matrix.connectme.anais.tech'"]}}"}
only includes timeline events for that room in the /sync response. It does not include account_data or ephemeral events.
@andreidiaconescu could you please either put the "response without filter" into a GitHub Gist or hide that away with a collapsing section? Thanks in advance
@Zocker1999NET done, i hope it's ok.
{"server_version":"1.61.1","python_version":"3.9.13"}
Sanity check: do you see this when running against the latest version of Synapse (1.65)?
I seem to be able to reproduce this on matrix.org:
$ curl -H "Authorization: Bearer $TOKEN" --get https://matrix-client.matrix.org/_matrix/client/v3/sync --data-urlencode 'filter={"room": {"rooms": ["!SGNQGPGUwtcPBUotTL:matrix.org"]}}' | tee response-filter | jq '.rooms.join."!SGNQGPGUwtcPBUotTL:matrix.org".account_data.events | length'
0
$ curl -H "Authorization: Bearer $TOKEN" --get https://matrix-client.matrix.org/_matrix/client/v3/sync | tee response-no-filter | jq '.rooms.join."!SGNQGPGUwtcPBUotTL:matrix.org".account_data.events | length'
2
I've narrowed this down to here
In a test with the initial state
>>> syncconfig.filter_collection
<FilterCollection {"room": {"rooms": ["!zIIoSoJpiOZzAWRpql:test"]}}>
>>> account_data_events
[{'type': 'org.matrix.foo', 'content': {'bar': 'baz'}}]
that snippet redefines account_data_events to the empty list.
The call to self._room_filter.filter(events)
here removes the given events.
Has this been broken for ages?
Looks to have been introduced here, in Synpase 0.34.0.
For some reason that commit made it so that per-room account data checks must pass the room
checks too. So we are going to be looking for a room_id
on the account data event itself. This field doesn't exist and so the filter excludes the account data event.
This is an example where Matrix sloppily calls all sorts of JSON objects events
without formally distinguishing between their semantics and expected structure.
I would guess that reverting the highlighted lines would suffice to fix the reported symptoms. But I'd be hesitant to do that without understanding the original motivation behind #454. Maybe just an oversight, or maybe there were spec changes between then and now.
Test that reproduces this:
Is there any possibility this get a fix?
Description
I use the /sync endpoint with and without filters as JSON; As filter i specify only one room id (!OMulzyGFCfueIWFHSU:matrix.connectme.anais.tech), and i indeed get only that room in rooms->join->[room id] and there are no events under [room id]->account_data -> events or [room id]->ephemeral -> events.
If i do not specify any filter, i get more rooms, including the one with id: !OMulzyGFCfueIWFHSU:matrix.connectme.anais.tech but there are events under: [room id]->account_data -> events and [room id]->ephemeral -> events for exactly the room with id !OMulzyGFCfueIWFHSU:matrix.connectme.anais.tech
Steps to reproduce
http://synapse:8008/_matrix/client/v3/sync?user_id=@crx66ctg69h32rv55mr3gd1n5mu3arb25nh3ce325ngk0ctn60up4c1h6hhk2ek7c5h74ub5dh066vvge1jpwwv9dtu2wrvfdm:matrix.connectme.anais.tech&
http://synapse:8008/_matrix/client/v3/sync?user_id=@crx66ctg69h32rv55mr3gd1n5mu3arb25nh3ce325ngk0ctn60up4c1h6hhk2ek7c5h74ub5dh066vvge1jpwwv9dtu2wrvfdm:matrix.connectme.anais.tech&filter=%7B%22room%22%3A+%7B%22rooms%22%3A+%5B%22%21OMulzyGFCfueIWFHSU%3Amatrix.connectme.anais.tech%22%5D%7D%7D
-- as can be seen up, the filter is : {filter: "{"room": {"rooms": ["!OMulzyGFCfueIWFHSU:matrix.connectme.anais.tech'"]}}"}http://synapse:8008/_matrix/client/v3/sync?user_id=@crx66ctg69h32rv55mr3gd1n5mu3arb25nh3ce325ngk0ctn60up4c1h6hhk2ek7c5h74ub5dh066vvge1jpwwv9dtu2wrvfdm:matrix.connectme.anais.tech&
Homeserver
local homeserver running in a docker
Synapse Version
{"server_version":"1.61.1","python_version":"3.9.13"}
Installation Method
Docker (matrixdotorg/synapse)
Platform
docker running on Ubuntu Linux
Relevant log output
Response without a filter
https://gist.github.com/andreidiaconescu/b46175c38a05e705187d00195a548f04
Response with filter {filter: "{"room": {"rooms": ["!OMulzyGFCfueIWFHSU:matrix.connectme.anais.tech'"]}}"}
Anything else that would be useful to know?
No response