shashank created CAMEL-25822:
--------------------------------
Summary: camel-aws2-sqs - the DST world fails a rare seed falsely
because its drain phase has a fixed length
Key: CAMEL-25822
URL: https://issues.apache.org/jira/browse/CAMEL-25822
Project: Camel
Issue Type: Bug
Components: camel-aws2-sqs, camel-test
Reporter: shashank
Assignee: shashank
The SQS world shipped with camel-test-dst (CAMEL-25738,
{{SqsVisibilityDstTest}} / {{SqsWorld}} in the camel-aws2-sqs tests) ends its
drain phase after a fixed virtual time, {{20 * visibilityTimeout + 30}} s after
the faults are switched off, and then checks that every sent message was routed
and the queue is drained.
A slow configuration can still be draining when that time runs out. With
{{visibilityTimeout=2 maxMessagesPerPoll=1 concurrentConsumers=1 delay=1000}}
the consumer takes at most one message per second, and short polling returns
fewer messages than asked about half the time. On main, 1 of 20,000 seeds fails
this way: seed 9667, {{every offered message is routed at least once: 1 never
routed: [q/m41]}}, trace hash {{dd65c816de75...}} (the same on two replays).
The trace shows a message deleted about every 1.2 s up to the check; the last
message would have been deleted 1.1 s after it. Nothing is lost: the failure is
the world's, not the consumer's.
*Fix* (test only): the world drains while it makes progress. It stops when the
queue is drained, when no message was deleted for {{20 * visibilityTimeout +
30}} s (the old fixed length, now measured from the last delete), or at a cap
of one hour of virtual time. The invariants are unchanged. The guide's snippet
of the drain phase ({{test-dst.adoc}} and its catalog copy) shows the new loop.
*Tests*: seed 9667 passes with the change (same trace hash on two replays).
20,000 seeds: 0 failing (main: 1). Self-check with the CAMEL-25700 fix reverted
locally: 1397 of 5000 seeds fail, all "no message is delivered again while the
consumer holds it", the same count as before the change.
_Filed with Claude Code on behalf of allthingssecurity._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)