Skip to content

Batched operations are not correctly updated on sync #686

@djmitche

Description

@djmitche

During a sync, we first download any new versions from the server, and "rebase" any local operations on top of those. The operational transform magic lets us do this rebasing deterministically and without conflicts.

When there are a lot of local changes, we "batch" them into ~1MB batches to improve performance. However, in downloading new versions we only rebase the current batch; remaining local operations after this batch are implicitly moved on top of the operations from the server without any OT being applied.

I think the easiest way to adjust this is to get new versions from the server and rebase on top of them before batching, then upload batches until done or server.add_version tells us that there's a new version (such as from another replica syncing at the same time). When that occurs, we can go back and start over only with the operations we haven't sync'd yet.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions