openvidu/openvidu-dashboard/openspec/changes/lost-ingress-error/specs/server-reconciler/spec.md

1.8 KiB
Raw Blame History

MODIFIED Requirements

Requirement: Lost egress and ingress representation

Edition: CE and PRO servers. Egress and ingress lost with their node SHALL be closed by the real EGRESS_ENDED (FAILED) and INGRESS_ENDED events of the server-side reconciler, projected as failed and error; the store reconciler SHALL close only candidate egress and ingress sessions, always as failed or error, never complete.

Scenario: Egress lost after the room is gone

  • GIVEN an egress whose handler died and whose room was deleted
  • WHEN the server-side reconciler emits EGRESS_ENDED with status FAILED and error "egress lost"
  • THEN the egress document has status: "failed", error from the event and closedBy: "event"

Scenario: Ingress lost after the room is gone

  • GIVEN a publishing ingress session whose ingress service died and whose room was deleted
  • WHEN the server-side reconciler resets its state to ENDPOINT_INACTIVE with error "ingress lost" and emits INGRESS_ENDED
  • THEN the ingress session has status: "error", error: "ingress lost" and closedBy: "event", and the ingress is inactive, ready for another session

Scenario: Store fallback for an egress

  • GIVEN a candidate egress (room closed for more than 2 × cleanup interval, node dead)
  • WHEN the reconciler closes it
  • THEN it has status: "failed", error: "egress lost (reconciled)", closedBy: "reconciler", endedAt = max(room.endedAt, egress.updatedAt) and a synthetic EGRESS_ENDED event exists

Scenario: Store fallback for an ingress session

  • GIVEN a candidate ingress session
  • WHEN the reconciler closes it
  • THEN it has status: "error", error: "ingress lost (reconciled)", closedBy: "reconciler", endedAt = max(room.endedAt, session.startedAt) and its ingress document reflects the ended session