allthingssecurity commented on PR #28434:
URL: https://github.com/apache/camel/pull/28434#issuecomment-6405829012

   @davsclaus thanks, you were right: a consumer that never routes passed. 
Fixed in 71238b57122b (a new commit on top, no squash).
   
   **The RELEASE check.** I used your sketch. The fake share consumer has a 
`wokenUp` flag that `wakeup` sets and nothing clears. In `acknowledge`, a 
RELEASE of a delivery that the route neither completed nor failed, on a share 
consumer that was never woken up, is a violation ("c0 released m0#1 without 
routing it, and it was not stopping"). This works because 
`KafkaShareFetchRecords.stop()` always wakes up the share consumer, so the only 
legal reason for such a RELEASE comes after a wakeup. The world's Javadoc now 
says this. Its claim "every published record completes in the route at least 
once" (unless the group archived it at the delivery limit, or rejected a failed 
delivery with `onFailure=REJECT`) is true again: archiving at the limit only 
happens through failures, expired locks or releases while stopping.
   
   **Fourth self-check entry, "release without routing"** (planted locally in 
`KafkaShareFetchRecords.java:225`, not committed, 5000 seeds each):
   - always `AcknowledgeType.RELEASE`: 5000 of 5000 fail, all on the new check. 
With the check switched off, the same fault fails 0 of 5000, so this check is 
what catches it.
   - `isRunAllowed()` inverted: 4997 of 5000 fail. 4466 fail on the new check, 
529 on the step budget (the consumer now routes while it stops, and the stop 
waits on the one stack), and 2 on another "documented use" violation.
   
   The other entries give the same counts as before: failed exchange → ACCEPT 
1922/5000, failed exchange → REJECT with `onFailure=RELEASE` 966/5000, 
`pollOnError=RECONNECT` ending the thread 377/5000, and CAMEL-25872 reverted 
2305/5000. On the branch code, 20000 of 20000 seeds pass. Unit tests: 
camel-kafka-share 1029, camel-kafka-common 11, camel-test-dst 49, with 0 
failures. The formatter and import sort made no changes.
   
   **PR description.** You're right. I dropped the sentence about the page 
intro no longer counting the worlds, since main already reads "These worlds 
..." and this diff only adds the row.
   
   _Claude Code on behalf of allthingssecurity_
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to