Event consumer queue-argument mismatch can terminate startup without containment #4

Open
opened 2026-09-06 19:12:31 +00:00 by nsaspy · 0 comments
Owner

Observed behavior

RabbitMQ logged PRECONDITION_FAILED for queue events: the declaration received no x-dead-letter-exchange while the existing queue had events.dead-letter. Event-consumer OPEN-STREAM then raised an unhandled CL-RABBIT:RABBITMQ-SERVER-ERROR, followed by server teardown errors.

Current source assessment (21461ee)

The loaded system order is consumers/consumers, owner-fixes, then retry-policy (source/starintel-gserver.asd:12-17). The active retry-policy open-stream redeclares queues without arguments (source/consumers/retry-policy.lisp:312-329), and its late create-rabbit-consumer replaces earlier definitions. start-event-consumer does not supply DLX topology (source/actor-systems/event-actor.lisp:240-267). The DLX-aware implementation in consumers/rabbit-settlement.lisp is not in the ASDF component list.

After the prior volume reset, the live events queue was observed with no DLX argument and two consumers. No current-source path declaring that same queue with DLX was found, so clean-start self-conflict is unproved. The confirmed defect is incompatible durable topology plus uncontained startup failure; the origin of the pre-existing DLX queue remains uncertain.

Expected behavior

Topology ownership/migration must be explicit and non-destructive. An incompatible non-empty durable queue must produce an actionable not-ready state rather than an unhandled worker exception/process teardown. Do not fix by disabling quarantine or deleting volumes.

Regression criteria

  • Test startup against existing queue definitions both with and without the supported arguments.
  • Prove the canonical declaration path and active load order.
  • Empty and non-empty incompatible queues have documented, safe outcomes.
  • Consumer startup failure is reflected in readiness and contained shutdown.

Research

STAR-RESEARCH-060 reassessment records the exact uncertainty and rejects the prior clean-start/stale-volume overclaim.

## Observed behavior RabbitMQ logged `PRECONDITION_FAILED` for queue `events`: the declaration received no `x-dead-letter-exchange` while the existing queue had `events.dead-letter`. Event-consumer `OPEN-STREAM` then raised an unhandled `CL-RABBIT:RABBITMQ-SERVER-ERROR`, followed by server teardown errors. ## Current source assessment (`21461ee`) The loaded system order is `consumers/consumers`, `owner-fixes`, then `retry-policy` (`source/starintel-gserver.asd:12-17`). The active `retry-policy` `open-stream` redeclares queues without arguments (`source/consumers/retry-policy.lisp:312-329`), and its late `create-rabbit-consumer` replaces earlier definitions. `start-event-consumer` does not supply DLX topology (`source/actor-systems/event-actor.lisp:240-267`). The DLX-aware implementation in `consumers/rabbit-settlement.lisp` is not in the ASDF component list. After the prior volume reset, the live `events` queue was observed with no DLX argument and two consumers. No current-source path declaring that same queue with DLX was found, so clean-start self-conflict is unproved. The confirmed defect is incompatible durable topology plus uncontained startup failure; the origin of the pre-existing DLX queue remains uncertain. ## Expected behavior Topology ownership/migration must be explicit and non-destructive. An incompatible non-empty durable queue must produce an actionable not-ready state rather than an unhandled worker exception/process teardown. Do not fix by disabling quarantine or deleting volumes. ## Regression criteria - Test startup against existing queue definitions both with and without the supported arguments. - Prove the canonical declaration path and active load order. - Empty and non-empty incompatible queues have documented, safe outcomes. - Consumer startup failure is reflected in readiness and contained shutdown. ## Research STAR-RESEARCH-060 reassessment records the exact uncertainty and rejects the prior clean-start/stale-volume overclaim.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starintel-labs/starintel-server#4
No description provided.