Andy Fedotov created CAMEL-8954:
-----------------------------------
Summary: Lock information is not handovered together with Exchange
on-completion synchronizations
Key: CAMEL-8954
URL: https://issues.apache.org/jira/browse/CAMEL-8954
Project: Camel
Issue Type: Bug
Components: camel-core
Affects Versions: 2.14.3
Reporter: Andy Fedotov
Priority: Minor
This applies to the file components when using common read-lock strategies:
- *markerFile* -
org.apache.camel.component.file.strategy.MarkerFileExclusiveReadLockStrategy
- *fileLock* -
org.apache.camel.component.file.strategy.FileLockExclusiveReadLockStrategy
This strategies stores lock information in the Exchange properties:
- *Exchange.FILE_LOCK_FILE_ACQUIRED* == "CamelFileLockFileAcquired"
- *Exchange.FILE_LOCK_FILE_NAME* == "CamelFileLockFileName"
- *Exchange.FILE_LOCK_EXCLUSIVE_LOCK* == "CamelFileLockExclusiveLock"
- *Exchange.FILE_LOCK_RANDOM_ACCESS_FILE* == "CamelFileLockRandomAccessFile"
Lock information is stored as scalar values and can hold information about
_only one single lock_.
When there are two Exchanges participates in the route, share UoW, and
synchronizations are handovered from one Exchange to another, information about
both locks can't be stored in the Exchange properties and lost. Consequently
when on-completion synchronizations are performed, read-lock strategies can't
access information about all the locks and they are not released.
For example, after completing this route lock for file1.dat is not released:
{code:java}
from("file:data/input-a?fileName=file1.dat&readLock=markerFile")
.pollEnrich("file:data/input-b?fileName=file2.dat&readLock=markerFile")
.to("mock:result");
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)