Skip to content

client: don't fail GC part/kill when the GC has unKXd members#773

Open
karamble wants to merge 1 commit into
companyzero:masterfrom
karamble:fix-gc-part-kill-unkxd-member
Open

client: don't fail GC part/kill when the GC has unKXd members#773
karamble wants to merge 1 commit into
companyzero:masterfrom
karamble:fix-gc-part-kill-unkxd-member

Conversation

@karamble

Copy link
Copy Markdown

PartFromGC and KillGroupChat delete the GC inside their db transaction and then call sendToGCMembers to notify the pre-delete member list. When the GC has unKXd members, sendToGCMembers re-reads the GC to find the owner to mediate transitive KX through, but the GC is already gone, so GetGC returns ErrNotFound and the whole part/kill errors out even though it succeeded. Tolerate the GC being gone: stop setting up mediate-ID requests (the message was already sent to the KXd members) instead of returning the error.

Includes a regression test (TestGCPartWithUnkxdMember) that fails without the fix; the full client GC e2e suite passes.

Closes #772

PartFromGC and KillGroupChat delete the GC inside their db transaction and then call sendToGCMembers to notify the pre-delete member list. When the GC has unKXd members, sendToGCMembers re-reads the GC to find the owner to mediate transitive KX through, but the GC is already gone, so GetGC returns ErrNotFound and the whole part/kill errors out even though it succeeded. Tolerate the GC being gone: stop setting up mediate-ID requests (the message was already sent to the KX'd members) instead of returning the error.

Adds a regression test (TestGCPartWithUnkxdMember) that fails without the fix.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

client: parting/dissolving a GC with unKXd members returns a spurious error

1 participant