An abandoned start holds its interviewer slot for five minutes
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 43/100
Research direction
Start by tracing /api/token and claim_and_dispatch, then inspect LocalDispatcher and the room task's candidate join timeout (CANDIDATE_JOIN_LIMIT). Identify how room ownership is authorized and how the existing no-show path releases consent; the proposed release endpoint should stop only an owned room that has not yet been joined. Done means an ended start releases its waiting slot promptly, while joined rooms and unauthorized callers are unaffected.
Written by the indexing model from the issue text.
Description
Follow-up to this review comment on #519.
By the time /api/token answers, claim_and_dispatch has already claimed consent and asked the dispatcher for an interviewer. LocalDispatcher reserves a slot and spawns the room task, and the slot is released only when that task returns. The agent then waits up to CANDIDATE_JOIN_LIMIT (300 s) for the candidate to join.
Since #519 the page can give up a start after the token response. If the candidate presses End while the Strict problem loads or while the LiveKit join is still in progress, connect stops the start and leaves any room it joined, but nothing tells the server. The agent waits for a candidate who will not come, and the slot counts against max_concurrent until the 300 s run out. A guest's slot also counts against the cap of two guest interviews. Other starts in that time can be refused with "The server is running as many interviews as it can right now." For a signed-in candidate, the consent claim stays until the no-show path releases it at the end of the wait.
Proposed fix:
- Once a token was granted,
abandonStartcalls a release endpoint with the room name, for examplePOST /api/token/release. - The server releases only a room the caller owns, and does nothing once the candidate has joined. A signed-in caller can be checked against the room authorization
/api/tokenalready grants. Guests get no such grant today, so they would need their own check, or could be left out at first. - The dispatcher stops the waiting room task, which drops the slot and releases consent through the existing no-show path.
A closed tab still waits out the 300 s, since nothing can send the call then. This only covers starts the page ends itself.
- Dominant language
- Rust
- Stars
- 215
- Forks
- 141
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 228
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from sysprog21/codetrial
-
Audio output can be confirmed without playing a test soundPossibly taken @ChenYingHan1121 claimed this 10 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
sysprog21/codetrial#359 · 6 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
Add update notifications for the prebuilt Windows binary ProblemPossibly taken @Yu-Ming-Chang claimed this today. Open
sysprog21/codetrial#547 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
Tell macOS binary users when a newer release is availablePossibly taken @LJY2000-max claimed this today. Open
sysprog21/codetrial#543 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
Web lobby cannot reopen Setup after configurationPossibly taken @YEH-YU-YANG claimed this 2 days ago. Open
sysprog21/codetrial#525 · 3 comments · 1 assignee ·
Maintainers usually reply within 1 day
All issues in sysprog21/codetrial
Similar issues
-
Add a just recipe that runs the workflow linters locallyPossibly taken @sgamelin claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
good first issue security
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
-
Status bar: a progress line that keeps the same text (import at 0%) ages out after 8 s and blinksOpenbug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
transit-audio/transit#216 ·
-
area: effects devices enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
suhina-daw/suhina-daw#1060 ·
Maintainers usually reply within 1 day