bug(collab): serialiseer Matrix-ops vóór verzending #1040

Closed
opened 2026-08-01 08:26:02 +00:00 by brenno · 1 comment
Owner

Context
CollabSessionController zet één deckwijziging om in meerdere geordende DeckOps. Op main worden de bijbehorende session.submit- en Matrix-sendOp-aanroepen niet geserialiseerd. De asynchrone encryptie en HTTP-PUTs kunnen versie 2 daardoor vóór versie 1 op de homeserver vastleggen.

Impact
Een volger accepteert alleen version + 1. Bij ontvangst van v2,v1 wordt v2 definitief overgeslagen, v1 toegepast en divergeren de decks. WebDAV voorkomt dit al met een append-chain; Matrix niet.

Relevante code

  • lib/collab/collab_session_controller.dart:66
  • lib/collab/collab_session.dart:124
  • lib/collab/matrix_relay_transport.dart:106
  • lib/collab/webdav_async_transport.dart:81

Acceptatie

  • Uitgaande Matrix-ops behouden aanmaak-/versievolgorde, ook bij overlappende calls.
  • Een verzendfout breekt de keten voor latere ops niet stil en wordt beheerst gerapporteerd.
  • Regressietest vertraagt de eerste fake Matrix-PUT, laat een tweede eerst kunnen afronden en bewijst dat de guest toch v1 en v2 plus het volledige einddeck ontvangt.
Context CollabSessionController zet één deckwijziging om in meerdere geordende DeckOps. Op main worden de bijbehorende session.submit- en Matrix-sendOp-aanroepen niet geserialiseerd. De asynchrone encryptie en HTTP-PUTs kunnen versie 2 daardoor vóór versie 1 op de homeserver vastleggen. Impact Een volger accepteert alleen version + 1. Bij ontvangst van v2,v1 wordt v2 definitief overgeslagen, v1 toegepast en divergeren de decks. WebDAV voorkomt dit al met een append-chain; Matrix niet. Relevante code - lib/collab/collab_session_controller.dart:66 - lib/collab/collab_session.dart:124 - lib/collab/matrix_relay_transport.dart:106 - lib/collab/webdav_async_transport.dart:81 Acceptatie - Uitgaande Matrix-ops behouden aanmaak-/versievolgorde, ook bij overlappende calls. - Een verzendfout breekt de keten voor latere ops niet stil en wordt beheerst gerapporteerd. - Regressietest vertraagt de eerste fake Matrix-PUT, laat een tweede eerst kunnen afronden en bewijst dat de guest toch v1 en v2 plus het volledige einddeck ontvangt.
Author
Owner

Opgelost op main (PR #1086, merge in e43ff81a). De relay-transport serialiseert uitgaande sends via een verzendketen; volgorde blijft behouden en een verzendfout breekt de keten niet. Regressietest parkeert de eerste op-PUT.

Opgelost op main (PR #1086, merge in e43ff81a). De relay-transport serialiseert uitgaande sends via een verzendketen; volgorde blijft behouden en een verzendfout breekt de keten niet. Regressietest parkeert de eerste op-PUT.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1040
No description provided.