Add 'safe multimerge'

Sergey Chernov 2023-06-21 09:01:49 +00:00
parent 953d050478
commit c7cbb3bbd6

46
safe-multimerge.md Normal file

@ -0,0 +1,46 @@
# Diagrams
Bob, Alice and Carol are editing the same data item. When they try to send updates to the server, 8 RAYS cloud enforces the order that only changing _last saved block state_ is actually allowed, so only one update is accepted and the rest get the merge request.
The multimerge cycle sample:
```mermaid
sequenceDiagram
actor Alice
actor Bob
actor Carol
participant Server
Note over Server, Alice: initial data: Hello world
par conflicting update 1
Alice->>+Server: data: Hello, world!
Server-->>-Alice: accepted
Bob->>+Server: data: Hello, cruel world
Server -->> Bob: merge request
Carol->>+Server: data: Bye, world
Server -->> Carol: merge request
end
note left of Server: now "Hello, world!"
par conflicting update 2
Bob->>+Server: data: Hello, cruel world!
Server -->> Bob: accepted
Carol->>+Server: data: Bye, world!
Server -->> Carol: merge request
Server --) Alice: update data
end
note left of Server: now Hello, cruel world!
par update 3
Carol->>+Server: data: Bye, cruel world!
Server -->> Carol: accepted
Server --) Alice: update data
Server --) Bob: update data
end
note left of Server: now Hello, cruel world!
Note over Server, Alice: syncronized data: Bye, cruel world!
```
Note that update data pushes from the server are send asynchronously and in the case the party got "merge required" answer the rendundant notification could be trashed by the server, this is a RC based issue, so each "merge required" and "update data" has identification data to avoid repeating updates/megres.