-
-
Notifications
You must be signed in to change notification settings - Fork 147
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GC error when referencing nodes deleted by detached client #1089
Closed
chacha912 opened this issue
Dec 6, 2024
· 0 comments
· Fixed by #1090 or yorkie-team/yorkie-js-sdk#931
Closed
GC error when referencing nodes deleted by detached client #1089
chacha912 opened this issue
Dec 6, 2024
· 0 comments
· Fixed by #1090 or yorkie-team/yorkie-js-sdk#931
Labels
bug 🐞
Something isn't working
Comments
This was referenced Dec 6, 2024
hackerwins
added a commit
that referenced
this issue
Dec 6, 2024
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 <susukang98@gmail.com>
hackerwins
pushed a commit
to yorkie-team/yorkie-js-sdk
that referenced
this issue
Dec 6, 2024
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.
hackerwins
added a commit
that referenced
this issue
Feb 11, 2025
This commit extends RWMutex interface for locker package. The original plan was to implement RWMutex for maintaining consistency in updateVersionVector during PushPull operations(#1081). However, this change is currently on hold due to the following reasons: 1. A bug was discovered in Lamport removal logic: #1089 2. The removal logic has been deprecated since v0.5.7 This commit includes only the interface extension while the actual implementation will be addressed in a future update. --------- Co-authored-by: Youngteac Hong <susukang98@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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: