#83 residual: reap abandoned-pending link-probe rooms (periodic sweep) #87

Closed
opened 2026-07-11 16:51:02 +00:00 by robocub · 1 comment
Collaborator

Follow-up to the #83 core (shipped alpha.18: leave-only-probe-created-joins on the FAILURE path). Residual: a probe that SUCCEEDS mints a pending link and retains the room join; if the pending is never approved and expires, the probe-created membership is never reaped (pending expiry is lazy — no timer, no on-expiry hook). Fix: track probe_joined: bool on PendingLink, add a periodic mgmt maintenance task (hook mgmt.rs:~530, mirror rtc/mod.rs:238 reaper) that prunes expired pendings AND leaves each expired-pending room whose probe_joined is set and which no committed tenant uses. Share this task with the #84/#85 residuals.

Follow-up to the #83 core (shipped alpha.18: leave-only-probe-created-joins on the FAILURE path). Residual: a probe that SUCCEEDS mints a pending link and retains the room join; if the pending is never approved and expires, the probe-created membership is never reaped (pending expiry is lazy — no timer, no on-expiry hook). Fix: track `probe_joined: bool` on `PendingLink`, add a periodic mgmt maintenance task (hook mgmt.rs:~530, mirror rtc/mod.rs:238 reaper) that prunes expired pendings AND leaves each expired-pending room whose `probe_joined` is set and which no committed tenant uses. Share this task with the #84/#85 residuals.
Author
Collaborator

Fixed + shipped in v0.3.0-alpha.19 (master 688d3a9, deployed to prod 2026-07-11). PendingLink records whether the probe created the room join; a 5-min management-bot maintenance sweep leaves rooms from expired, unapproved, probe-created pending links — never a room a bridge holds. Safe set = running bridges (ControlMsg::Status, static+tenant) unioned with configured tenant rooms (new nvb_config::tenant_rooms); the sweep is skipped entirely if that set can't be read (fail-safe). Live: mgmt scenario PASS, prod first-sweep left nothing. Note: idle-but-occupied rooms are out of scope (only empty rooms are left — see #89).

Fixed + shipped in **v0.3.0-alpha.19** (master `688d3a9`, deployed to prod 2026-07-11). `PendingLink` records whether the probe created the room join; a 5-min management-bot maintenance sweep leaves rooms from expired, unapproved, probe-created pending links — never a room a bridge holds. Safe set = running bridges (`ControlMsg::Status`, static+tenant) unioned with configured tenant rooms (new `nvb_config::tenant_rooms`); the sweep is skipped entirely if that set can't be read (fail-safe). Live: mgmt scenario PASS, prod first-sweep left nothing. Note: idle-but-*occupied* rooms are out of scope (only empty rooms are left — see #89).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
dark/nether-voicebridge#87
No description provided.