Claus Ibsen created CAMEL-25551:
-----------------------------------

             Summary: camel-azure-storage-blob, camel-huaweicloud-obs, 
camel-alibaba-oss, camel-aws2-s3-vectors - do not consume an object again while 
its exchange is in flight
                 Key: CAMEL-25551
                 URL: https://issues.apache.org/jira/browse/CAMEL-25551
             Project: Camel
          Issue Type: Bug
          Components: camel-aws2, camel-azure
            Reporter: Claus Ibsen
            Assignee: Claus Ibsen
             Fix For: 4.23.0


These polling consumers list objects and route them asynchronously, and delete 
(or move) the object in the on completion of the exchange. They do not track 
which objects are in flight, so when routing takes longer than the poll delay 
(slow route, threads(), etc.) the next poll lists the same object again and 
routes it a second time. The second exchange then fails to delete/move it (404).

* camel-azure-storage-blob BlobConsumer with deleteAfterRead=true or 
moveAfterRead=true. With fileDir it is worse: the blob is deleted and 
downloaded again to the same local file while the first exchange is still 
reading it.
* camel-huaweicloud-obs OBSConsumer with deleteObject / moveObject.
* camel-alibaba-oss OSSConsumer with deleteAfterRead=true.
* camel-aws2-s3-vectors consumer with deleteAfterRead=true (the 
processedVectorIds dedup only covers the branch without delete).

The fix is the same as camel-minio (CAMEL-25512) and the in-progress repository 
of camel-aws2-s3: remember the objects in flight, skip them on the next poll, 
and release them when the exchange completes or fails, when the exchange could 
not be created, and for exchanges that are not routed because the consumer is 
stopping (closing their streams).

camel-azure-storage-blob also fails the whole poll when one listed blob is 
deleted before it is read (404), and drops the exchanges already created 
without closing their streams.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to