Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Downgrades should gracefully handle local state in a newer version than expected #7735

Closed
jryans opened this issue Nov 22, 2018 · 6 comments
Closed
Labels
P2 T-Task Tasks for the team like planning

Comments

@jryans
Copy link
Collaborator

jryans commented Nov 22, 2018

We should isolate state from different instances from Riot on the same domain such as (riot.im/app and riot.im/develop).

At the moment, you could open any version of Riot Web from the same domain, and they will all access the same browser state. Newer branches (such as /develop) might upgrade local state to a newer version, rendering it unusable by older branches (such as /app).

This kind of corruption caused E2E message keys to be lost (via crypto DB version changes) in #7734.

@ara4n
Copy link
Member

ara4n commented Nov 22, 2018

in the past we've used this as a feature; letting users rapidly switch between /app and /staging and /develop without having to relogin and resync. also, we need to support people being able to switch riot version back & forth on a given domain (e.g. upgrading chat.example.com to riot 0.17; deciding it sucks and downgrading to 0.16; without destroying their users).

so i wonder whether the better solution is to 'just' correctly manage the versioning of localstorage & indexeddb to avoid corruption in the first place...

@jryans
Copy link
Collaborator Author

jryans commented Nov 22, 2018

I agree that when it works, it's quite convenient. It's definitely nice to be able to test different branches quickly.

I think the most complex case versioning case comes from an older client reading a newer data format it knows nothing about. If we want to preserve the current world of rapid switching, we'll need to think carefully about what to do in that case.

@ara4n
Copy link
Member

ara4n commented Nov 22, 2018

so i don't care /too/ much about rapid switching; i'd prefer that we had rapid login!

but we do need to protect against the scenario where chat.example.com downgrades without corrupting all their users.

@jryans
Copy link
Collaborator Author

jryans commented Nov 22, 2018

I'll refocus this on the more general issue of ensuring that software downgrades gracefully handle local state in a newer version than expected.

One possible way to encounter a "downgrade" is via the different branches on riot.im, but it also includes the chat.example.com case of a single branch that has reverted to a previous version.

@jryans jryans changed the title Isolate state from different app branches Downgrades should gracefully handle local state in a newer version than expected Nov 22, 2018
@lampholder
Copy link
Member

I think the rapid-switching is a red herring - useful or not, the time saved on logging into two or three different clients is nothing compared to the time spent reasoning about (and fixing bugs caused by) the additional complexity.

However, giving people who deploy their own instances of Riot a downgrade path is important, and I'm not confident that we'd remember to do this right now if we weren't feeling the pain of incompatible versions running in parallel.

Is there a path we can take which guarantees robust downgrade paths for versioned releases? Then we could move riot.im/x to x.riot.im confident in the knowledge that we weren't breaking the downgrade path as well as not having to worry that in-development changes are going to cause unmanaged incompatibility fireworks.

@lampholder lampholder added T-Task Tasks for the team like planning P1 P2 and removed P1 labels Nov 23, 2018
su-ex added a commit to SchildiChat/element-web that referenced this issue Feb 15, 2022
* Support a config option to change the default device name ([\element-hq#20790](element-hq#20790)).
* Capitalize "Privacy" in UserMenu ([\element-hq#7738](matrix-org/matrix-react-sdk#7738)). Contributed by @aaronraimist.
* Move new search experience to a Beta ([\#7718](matrix-org/matrix-react-sdk#7718)). Fixes element-hq/element-meta#139 element-hq#20618 and element-hq#20339.
* Auto select "Other homeserver" when user press "Edit" in homeserver field ([\element-hq#7337](matrix-org/matrix-react-sdk#7337)). Fixes element-hq#20125. Contributed by @SimonBrandner.
* Add unread badges and avatar decorations to spotlight search ([\element-hq#7696](matrix-org/matrix-react-sdk#7696)). Fixes element-hq#20821.
* Enable location sharing ([\element-hq#7703](matrix-org/matrix-react-sdk#7703)).
* Simplify Composer buttons ([\element-hq#7678](matrix-org/matrix-react-sdk#7678)).
* Add a warning to the console to discourage attacks and encourage contributing ([\element-hq#7673](matrix-org/matrix-react-sdk#7673)). Fixes element-hq#2803. Contributed by @SimonBrandner.
* Don't show replaced calls in the timeline ([\element-hq#7452](matrix-org/matrix-react-sdk#7452)). Contributed by @SimonBrandner.
* Tweak `/addwidget` widget names ([\element-hq#7681](matrix-org/matrix-react-sdk#7681)).
* Chat export parameter customisation ([\element-hq#7647](matrix-org/matrix-react-sdk#7647)).
* Put call on hold when transfer dialog is opened ([\element-hq#7669](matrix-org/matrix-react-sdk#7669)).
* Share e2ee keys when using /invite SlashCommand ([\element-hq#7655](matrix-org/matrix-react-sdk#7655)). Fixes element-hq#20778 and element-hq#16982.
* Tweak spotlight roving behaviour to reset when changing query ([\#7656](matrix-org/matrix-react-sdk#7656)). Fixes element-hq#20537 element-hq#20612 and element-hq#20184.
* Look up tile server info in homeserver's .well-known area ([\element-hq#7623](matrix-org/matrix-react-sdk#7623)).
* Add grouper for hidden events ([\element-hq#7649](matrix-org/matrix-react-sdk#7649)).
* The keyboard shortcut is control (or cmd) shift h. ([\element-hq#7584](matrix-org/matrix-react-sdk#7584)). Contributed by @UwUnyaa.
* [Release] Fix cutout misalignment on some decorated room avatars ([\element-hq#7785](matrix-org/matrix-react-sdk#7785)).
* [Release] Fix add existing space not showing any spaces ([\element-hq#7756](matrix-org/matrix-react-sdk#7756)).
* [Release] Inhibit Room List keyboard pass-thru when the search beta is enabled ([\element-hq#7754](matrix-org/matrix-react-sdk#7754)).
* [Release] Fix space member list not opening ([\element-hq#7755](matrix-org/matrix-react-sdk#7755)).
* Null-guard ELS from null summaryMembers ([\element-hq#7744](matrix-org/matrix-react-sdk#7744)). Fixes element-hq#20807.
* Improve responsiveness of the layout switcher ([\element-hq#7736](matrix-org/matrix-react-sdk#7736)).
* Tweak timeline card layout ([\element-hq#7743](matrix-org/matrix-react-sdk#7743)). Fixes element-hq#20846.
* Ensure location bodies have a width in bubbles ([\element-hq#7742](matrix-org/matrix-react-sdk#7742)). Fixes element-hq#20916.
* Tune aria-live regions around clocks/timers ([\element-hq#7735](matrix-org/matrix-react-sdk#7735)). Fixes element-hq#20967.
* Fix instances of decorated room avatar wrongly having their own tabIndex ([\element-hq#7730](matrix-org/matrix-react-sdk#7730)).
* Remove weird padding on stickers ([\element-hq#6271](matrix-org/matrix-react-sdk#6271)). Fixes element-hq#17787. Contributed by @SimonBrandner.
* Fix width issue of the composer overflow menu items ([\element-hq#7731](matrix-org/matrix-react-sdk#7731)). Fixes element-hq#20898.
* Properly handle persistent widgets when room is left ([\element-hq#7724](matrix-org/matrix-react-sdk#7724)). Fixes element-hq#20901.
* Null guard space hierarchy ([\element-hq#7729](matrix-org/matrix-react-sdk#7729)). Fixes matrix-org/element-web-rageshakes#10433.
* Fix add existing rooms button ([\element-hq#7728](matrix-org/matrix-react-sdk#7728)). Fixes element-hq#20924. Contributed by @SimonBrandner.
* Truncate long server names on login/register screen ([\element-hq#7702](matrix-org/matrix-react-sdk#7702)). Fixes element-hq#18452.
* Update PollCreateDialog-test to snapshot the html and not react tree ([\element-hq#7712](matrix-org/matrix-react-sdk#7712)).
* Fix creating polls outside of threads ([\element-hq#7711](matrix-org/matrix-react-sdk#7711)). Fixes element-hq#20882.
* Open native room when clicking notification from a virtual room ([\element-hq#7709](matrix-org/matrix-react-sdk#7709)).
* Fix relative link handling in Element Desktop ([\element-hq#7708](matrix-org/matrix-react-sdk#7708)). Fixes element-hq#20783.
* Reuse CopyableText component in all places it can be ([\element-hq#7701](matrix-org/matrix-react-sdk#7701)). Fixes element-hq#20855.
* Fit location into the width of the container ([\element-hq#7705](matrix-org/matrix-react-sdk#7705)). Fixes element-hq#20861.
* Make Spotlight Dialog roving reset more stable ([\element-hq#7698](matrix-org/matrix-react-sdk#7698)). Fixes element-hq#20826.
* Fix incorrect sizing of DecoratedRoomAvatar in RoomHeader ([\element-hq#7697](matrix-org/matrix-react-sdk#7697)). Fixes element-hq#20090.
* Use a more correct test for emoji ([\element-hq#7685](matrix-org/matrix-react-sdk#7685)). Fixes element-hq#20824. Contributed by @robintown.
* Fix vertical spacing in `compact` `<ContextMenu>` ([\element-hq#7684](matrix-org/matrix-react-sdk#7684)). Fixes element-hq#20801.
* Fix the sticker picker ([\element-hq#7692](matrix-org/matrix-react-sdk#7692)). Fixes element-hq#20797.
* Fix publishing address wrongly demanding the alias be available ([\element-hq#7690](matrix-org/matrix-react-sdk#7690)). Fixes element-hq#12013 and element-hq#20833.
* Prevent MemberAvatar soft-crashing when rendered with null member prop ([\element-hq#7691](matrix-org/matrix-react-sdk#7691)). Fixes element-hq#20714.
* Ensure UserInfo can be rendered without a room ([\element-hq#7687](matrix-org/matrix-react-sdk#7687)). Fixes element-hq#20830.
* Make polls fill column width in bubbles layout ([\#7661](matrix-org/matrix-react-sdk#7661)). Fixes element-hq#20712.
* Add a background to expanded nick name in IRC layout to make it readable. ([\element-hq#7652](matrix-org/matrix-react-sdk#7652)). Fixes element-hq#20757. Contributed by @UwUnyaa.
* Fix accessibility and consistency of MessageComposerButtons ([\element-hq#7679](matrix-org/matrix-react-sdk#7679)). Fixes element-hq#20814.
* Don't show shield next to deleted messages ([\element-hq#7671](matrix-org/matrix-react-sdk#7671)). Fixes element-hq#20475. Contributed by @SimonBrandner.
* Fix font size of spaces between big emoji ([\element-hq#7675](matrix-org/matrix-react-sdk#7675)). Contributed by @robintown.
* Fix shift-enter repeating last character ([\element-hq#7665](matrix-org/matrix-react-sdk#7665)). Fixes element-hq#17215. Contributed by @SimonBrandner.
* Remove Unpin option from maximised widget context menu ([\element-hq#7657](matrix-org/matrix-react-sdk#7657)).
* Fix new call event grouper implementation for encrypted rooms ([\element-hq#7654](matrix-org/matrix-react-sdk#7654)).
* Fix issue with tile error boundaries collapsing in bubbles layout ([\element-hq#7653](matrix-org/matrix-react-sdk#7653)).
* Fix emojis getting cropped in irc & bubble layouts by anti-zalgo ([\element-hq#7637](matrix-org/matrix-react-sdk#7637)). Fixes element-hq#20744.
* Fix space panel edge gradient not applying on load ([\element-hq#7644](matrix-org/matrix-react-sdk#7644)). Fixes element-hq#20756.
* Fix search results view for layouts other than Group/Modern ([\element-hq#7648](matrix-org/matrix-react-sdk#7648)). Fixes element-hq#20745.
@t3chguy
Copy link
Member

t3chguy commented May 12, 2023

This is no longer needed given we split them out into subdomains

@t3chguy t3chguy closed this as completed May 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P2 T-Task Tasks for the team like planning
Projects
None yet
Development

No branches or pull requests

4 participants