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

Rooms with unsupported versions are shown as blank rooms #7083

Closed
ara4n opened this issue Mar 16, 2020 · 17 comments · Fixed by #10644
Closed

Rooms with unsupported versions are shown as blank rooms #7083

ara4n opened this issue Mar 16, 2020 · 17 comments · Fixed by #10644
Assignees
Labels
S-Tolerable Minor significance, cosmetic issues, low or no impact to users. T-Defect Bugs, crashes, hangs, security vulnerabilities, or other reported issues.

Comments

@ara4n
Copy link
Member

ara4n commented Mar 16, 2020

In the last ~4-5 days

!VXChyxVNCBsWeSGcaN:sw1v.org
!eKTrlepAvBEhUIyoQV:jki.re
!bNAPsppHlSHCDvMRhh:abolivier.bzh

@ara4n
Copy link
Member Author

ara4n commented Mar 16, 2020

(i haven't actually looked at my /sync response, but riot shows them to be entirely blank v1 rooms)

@neilisfragile
Copy link
Contributor

I also can't see !eKTrlepAvBEhUIyoQV:jki.re

@erikjohnston
Copy link
Member

erikjohnston commented Mar 16, 2020

All three of those rooms use experimental room versions that have since been removed from synapse, I think its basically expected for those to go pop, though they should go pop in a better way.

@neilisfragile
Copy link
Contributor

Right and it just about works okay when people have cached history, but switching over to a new client (like Riot electron) has this problem.

@richvdh richvdh changed the title Multiple rooms have lost all events (state or otherwise) in my initial /sync Rooms with unsupported versions are shown as blank rooms Mar 16, 2020
@richvdh
Copy link
Member

richvdh commented Mar 16, 2020

I'm going to suggest we triage this alongside other synapse bugs rather than treat it as a crisis.

@clokep
Copy link
Member

clokep commented Apr 2, 2020

#7209 also points to some errors during initial sync for unknown room versions.

@richvdh
Copy link
Member

richvdh commented Jul 20, 2020

suggestion is that for now we exclude such rooms from initial /sync responses, thus hiding them on clients. (you'll have to flush your client cache, but we can live with that)

In future, if we drop production room versions (eg v1) we'll need to do better than this, but this will do as a first step.

@ara4n
Copy link
Member Author

ara4n commented Aug 14, 2020

how do I get back into these rooms, though? i can't seem to participate in them enough to follow the tombstone to the new version...

@richvdh
Copy link
Member

richvdh commented Aug 14, 2020

you don't. The whole point is that they were experimental room versions that are no longer supported. I guess you get someone to manually invite you to the new room.

@anoadragon453
Copy link
Member

Worth noting that deleting the room from rooms and the events from events and events_json clears them right up.

@erikjohnston
Copy link
Member

Currently /purge_rooms fails to delete these rooms, as users are in them. Might be worth fixing it so that it works?

@jryans
Copy link
Contributor

jryans commented Jun 30, 2021

Personally, I would at least like to be able to leave these unsupported rooms, but currently even that is not possible... 😢

Currently, the /leave request gives a 400 error with M_UNSUPPORTED_ROOM_VERSION. The unfortunate symptom of this is that the unleavable room is permanently at the top of my room list... 😭

@clokep
Copy link
Member

clokep commented Jun 30, 2021

Personally, I would at least like to be able to leave these unsupported rooms, but currently even that is not possible... 😢

The technical reason behind this is that Synapse doesn't know how to resolve state in those rooms.

@anoadragon453
Copy link
Member

Can we just generate a local out-of-band leave event for the client, just as we do when rejecting an invite/rescinding a knock from a room that we're not in and cannot contact?

async def _generate_local_out_of_band_leave(
self,
previous_membership_event: EventBase,
txn_id: Optional[str],
requester: Requester,
content: JsonDict,
) -> Tuple[str, int]:
"""Generate a local leave event for a room
This can be called after we e.g fail to reject an invite via a remote server.
It generates an out-of-band membership event locally.
Args:
previous_membership_event: the previous membership event for this user
txn_id: optional transaction ID supplied by the client
requester: user making the request, according to the access token
content: additional content to include in the leave event.
Normally an empty dict.
Returns:
A tuple containing (event_id, stream_id of the leave event)
"""

It just generates a leave event that's propagated to the client, but not into the room proper.

@richvdh
Copy link
Member

richvdh commented Jul 1, 2021

even out-of-band leaves go through state res...

@richvdh
Copy link
Member

richvdh commented Jul 1, 2021

I think? maybe not, actually. Might be worth a go. (but then, I still think it would be easier just to exclude unsupported rooms from /sync.)

@erikjohnston erikjohnston added S-Tolerable Minor significance, cosmetic issues, low or no impact to users. T-Defect Bugs, crashes, hangs, security vulnerabilities, or other reported issues. labels Jul 23, 2021
@clokep
Copy link
Member

clokep commented Jul 29, 2021

I think? maybe not, actually. Might be worth a go. (but then, I still think it would be easier just to exclude unsupported rooms from /sync.)

I'm fairly certain they do, we still generate an event which requires a known room version (and it also requires auth/prev events).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
S-Tolerable Minor significance, cosmetic issues, low or no impact to users. T-Defect Bugs, crashes, hangs, security vulnerabilities, or other reported issues.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants