Skip to content

fix(backend): make stream state transitions concurrency-safe #71

Description

@arisu6804

Problem

Concurrent cancel, pause, top-up, and withdraw requests can observe stale state and apply incompatible transitions.

Objective

Deliver a production-quality improvement to stream lifecycle service and persistence that creates measurable value for correctness, security, reliability, performance, or maintainability.

Implementation scope

  • Define an explicit state machine and allowed transitions; use optimistic or pessimistic concurrency control; return version conflicts safely.

Acceptance criteria

  • Invalid transitions fail atomically; exactly one concurrent transition wins; clients receive the resulting version and state.

Required validation

  • State-machine, race, retry, stale-version, and failure-rollback tests.
  • Existing tests and CI remain passing.
  • Add regression coverage for the original failure mode.
  • Do not weaken, delete, or skip unrelated tests to obtain a green build.

PR quality bar

  • Keep the PR focused and explain design tradeoffs, compatibility impact, and test evidence.
  • Avoid typo-only, documentation-only, cosmetic-only, or unrelated refactor submissions.

Out of scope

  • Broad rewrites not required by the acceptance criteria.
  • Changes to unrelated services, contracts, or user flows.

Metadata

Metadata

Labels

GRANTFOX OSSOpen-source issue tracked by GrantFoxMAYBE REWARDEDThis issue may carry a rewardThird CampaignThird Campaign contributionenhancementNew feature or requestpriority:highHigh implementation priority

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions