Skip to content

fix(crews): a seat reserved before a restart mid-launch stays on the roster with no thread #376

Closed

Description

@bryantderosier

Problem

If the server stops after a Crew launch has reserved its seats but before every seat thread exists, a reserved seat with no thread can stay on the Crew's roster. The live launch drops a never-created seat from the record (CrewLaunchService), but that step only runs during the launch. After a restart, the launch reporter's startup sweep (CrewLaunchReporter.reconcile) still reports the seat as "its thread was never created", but nothing removes the reservation. If the Captain then asks for the same seat with request_crew_member, the leftover reservation can block the name.

I found this by reading the code while closing #346. I haven't reproduced it.

Proposed fix

When the startup sweep reports a seat as never created, drop that seat's reservation the same way the live launch does, so the roster matches what exists and the Captain can request the seat again. Add one test: reserve seats, simulate a restart before one spawns, run the sweep, and expect the seat off the roster and requestable again.

Out of scope

Activity

  1. added this to the Crews milestone on Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions