Skip to content
This repository was archived by the owner on Apr 4, 2022. It is now read-only.
This repository was archived by the owner on Apr 4, 2022. It is now read-only.

Concurrency problems with state update can lead to membership data loss #18

@cmeiklejohn

Description

@cmeiklejohn

The attempt_join process uses the externally exported update_state function to write the state back to the ETS table; however, a race condition can occur where the state in the ETS table has changed which will be overwritten when persisted back to the ETS table.

What really needs to happen is that attempt_join needs to submit it's own changes; the metadata manager needs to act in serial and compute the merge, or join, itself before binding the state change. This is the only safe way to compute this join and is how Lasp deals with concurrent edits to the same CRDT at a single replica.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions