You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When performing garbage collection (GC), an error occurs if we use minVersionVector.minLamport() for detached clients whose lamport is not present in the minimum version vector (minVV). This leads to a node reference error when other clients haven't yet acknowledged the detach operation.
Current Behavior
When calculating minVV, lamports from detached clients are filtered out
If a client's lamport is missing from minVV, we currently use minVersionVector.minLamport()
This assumes all clients have synced up to the minimum lamport in minVV
However, this assumption breaks when dealing with detached clients since their lamports are filtered out
How to reproduce it (as minimally and precisely as possible):
Following the GC error discovered in #1089, we've temporarily modified the
version vector handling to retain the detached client's lamport across
local and minimum version vectors. This change provides a stopgap solution
while we investigate a more comprehensive approach to garbage collection.
---------
Co-authored-by: Youngteac Hong <[email protected]>
Following the GC error discovered in yorkie-team/yorkie#1089, we've temporarily
modified the version vector handling to retain the detached client's lamport across
local and minimum version vectors. This change provides a stopgap solution
while we investigate a more comprehensive approach to garbage collection.
What happened:
When performing garbage collection (GC), an error occurs if we use
minVersionVector.minLamport()
for detached clients whose lamport is not present in the minimum version vector (minVV). This leads to a node reference error when other clients haven't yet acknowledged the detach operation.Current Behavior
minVersionVector.minLamport()
How to reproduce it (as minimally and precisely as possible):
The following sequence demonstrates the issue:
removedAt(6@C) < minVV(7)
Anything else we need to know?:
Proposed Solutions
Note by @JOOHOJANG : https://codepair.yorkie.dev/jooho/6751b5989b55661e0466876c/share?token=rwat6
Solution 1: Keep Detached Users' Lamports
Solution 2: Track Detach Acknowledgment
{actorID: lamport}
in a separate tableminVV[detachedClientID] === detachedClientLamport
(This indicates all users have received the detach change)
Environment:
yorkie version
):0.5.6
The text was updated successfully, but these errors were encountered: