davsclaus opened a new pull request, #27682:
URL: https://github.com/apache/camel/pull/27682

   These polling consumers route each exchange asynchronously and delete/move 
the object only on completion, so when routing takes longer than the poll delay 
(slow route, `threads()`, `seda`, ...) the next poll consumed the same object 
again while its first exchange was still in flight (and the later delete/move 
could 404).
   
   Like camel-minio (CAMEL-25512), each consumer now keeps the names in flight 
in a private set and skips them on the next poll. A name is released on 
completion/failure (after the commit/rollback work), when reading the object 
fails, and for exchanges not routed because the consumer is stopping (which are 
also released back to the exchange factory). No new endpoint options.
   
   - **camel-azure-storage-blob**: also skips a single listed blob that returns 
404 (deleted after the listing) instead of dropping the whole poll, which 
leaked the opened streams and re-read those blobs; closes the blob streams of 
exchanges that are not routed. Blobs are tracked whether or not 
`deleteAfterRead`/`moveAfterRead` is set: without them every poll still reads 
all blobs again, only not while their exchange is in flight (documented on the 
consumer page).
   - **camel-huaweicloud-obs**, **camel-alibaba-oss**: a listed object that 
returns 404 is skipped instead of failing the poll.
   - **camel-aws2-s3-vectors**: with `deleteAfterRead=true`, vectors in flight 
are now tracked too; the de-duplication set is now thread-safe.
   
   Tests: new `*InProgressTest` per module with mocked clients (no Docker): 
in-flight object not read again, consumed again after a failure, 
deleted-after-listing object skipped, not-routed exchanges released on stop; 
they fail without the fix. Existing unit tests of the four modules pass. Docs: 
azure blob consumer page note and 4.23 upgrade guide entries.
   
   Fixes [CAMEL-25551](https://issues.apache.org/jira/browse/CAMEL-25551)
   
   _Claude Code on behalf of davsclaus_
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
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