Skip to content

Board-access mutation lane can stall behind unsettled transport #3364

Description

@Chris0Jeky

Summary

The client serializes board-access update/revoke intents per access entry in #3363. If an already-started transport never settles, a queued same-entry intent waits on that predecessor indefinitely. Session invalidation retires old queued transport, but a new session's intent must still wait for the old in-flight write because the server has no revision precondition and the older write might commit later.

Reproduction schedule

  1. Start updateAccess for one board-access entry and leave its API promise pending.
  2. Queue revokeAccess for the same entry, or rotate the token and submit a new same-entry update.
  3. The later operation holds loading and cannot start transport while the predecessor remains pending.

The request path currently has no explicit Axios timeout. The current serialization is intentional fail-closed ordering; an arbitrary client timeout alone cannot prove that a server write will not commit afterward.

Acceptance direction

  • Define and test a bounded, truthful recovery contract for a stalled same-entry lane, including whether the server accepted the first write.
  • Preserve order and authorization across token/account replacement. Do not allow a later write to overtake a server write merely because the client stopped waiting.
  • Show loading/error state and user action clearly when the outcome is uncertain.
  • Keep different access entries independent.

Discovered in the independent review of #3363. This is a nonblocking follow-up; the immediate cross-session overtaking defect is fixed there.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority IIIValuable but unscheduled: residuals, tech-debt, performance, depth work.bugSomething isn't workingfrontendPrimary implementation impact in Vue/TypeScript UI and client runtime.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions