feat(mls/database): add ProcessPendingSelfRemove Task variant#335
Merged
Conversation
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 8, 2026
…mtp/proto#335) Stacked on insipx/event-driven-disappearing. Adds the proto-independent piece of folding PendingSelfRemoveWorker into the TaskRunner: a shared MlsGroup::process_pending_self_removals() helper (remove + cleanup) callable from both the inline fast-path and the durable task dispatch. BLOCKED: the remaining work (ProcessPendingSelfRemove Task proto variant, in-txn dedup enqueue at the LeaveRequest write site, TaskRunner dispatch arm, deletion of the old worker) depends on the regenerated proto type from xmtp/proto#335. Complete via dev/gen_protos.sh once that PR merges. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
marked this pull request as ready for review
June 8, 2026 21:38
Contributor
ApprovabilityVerdict: Approved Additive protobuf schema change that adds a new Task variant without modifying existing fields or behavior. The change is backwards-compatible and authored by the designated code owner of the modified file. You can customize Macroscope's approvability policy. Learn more. |
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 8, 2026
…mtp/proto#335) Stacked on insipx/event-driven-disappearing. Adds the proto-independent piece of folding PendingSelfRemoveWorker into the TaskRunner: a shared MlsGroup::process_pending_self_removals() helper (remove + cleanup) callable from both the inline fast-path and the durable task dispatch. BLOCKED: the remaining work (ProcessPendingSelfRemove Task proto variant, in-txn dedup enqueue at the LeaveRequest write site, TaskRunner dispatch arm, deletion of the old worker) depends on the regenerated proto type from xmtp/proto#335. Complete via dev/gen_protos.sh once that PR merges. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
🎉 This PR is included in version 3.93.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 8, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 8, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 8, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 8, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 8, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 8, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
insipx
added a commit
to xmtp/libxmtp
that referenced
this pull request
Jun 9, 2026
Replace the 2s-poll PendingSelfRemoveWorker with a durable TaskRunner task. On receiving a LeaveRequest, enqueue a ProcessPendingSelfRemove task in the SAME db transaction as the pending_remove insert (atomic, restart-safe), deduped per group via a pre-insert existence check. The inline admin fast-path is kept; the task is the retry/backstop (TaskRunner gives backoff + persistence across restart). Dispatch loads the group and runs the shared MlsGroup::process_pending_self_removals() helper (remove + cleanup), called from both the inline path and the task. Deletes PendingSelfRemoveWorker, its WorkerKind, and registration; updates the wasm/mobile/node bindings that mirrored the WorkerKind enum. Adds the ProcessPendingSelfRemove Task proto variant (xmtp/proto#335) via regenerated protos. The proto regen also pulls accumulated upstream drift in unrelated message_api/message_contents/xmtpv4 gen files (the committed gen lagged its pin); the only intentional proto change is ProcessPendingSelfRemove. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a third
Taskoneof variant,ProcessPendingSelfRemove { group_id }(tag 3), toproto/mls/database/task.proto.Why
libxmtp is converting the poll-based
PendingSelfRemoveWorkerinto a durable, event-driven task on the existingTaskRunner. When aLeaveRequestis received, libxmtp records apending_removerow; a super-admin client must then build the MLS RemoveProposal/Commit to actually evict the member. Folding this into theTaskRunnergives it persistence-across-restart, retry, and exponential backoff for free — but requires aTaskvariant to represent the work.This is the upstream-proto prerequisite for the libxmtp stacked PR (
insipx/event-driven-self-remove). Once this merges, libxmtp regenerates viadev/gen_protos.shand consumes tag 3.Compatibility
Additive only — new oneof field with a fresh tag (3). No existing field changed; backward compatible.
🤖 Generated with Claude Code
Note
Add
ProcessPendingSelfRemovetask variant to MLS database protoAdds a new
ProcessPendingSelfRemovemessage and a correspondingprocess_pending_self_removeoneof variant (field 3) to theTaskmessage in task.proto. The new message carries a singlegroup_idbytes field to identify the group for which a pending self-remove should be processed.Macroscope summarized cd67a68.