[
https://issues.apache.org/jira/browse/CAMEL-21926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrea Cosentino reassigned CAMEL-21926:
----------------------------------------
Assignee: Andrea Cosentino
> camel-attachment: inconsistent behaviour
> ----------------------------------------
>
> Key: CAMEL-21926
> URL: https://issues.apache.org/jira/browse/CAMEL-21926
> Project: Camel
> Issue Type: Bug
> Components: camel-attachments
> Affects Versions: 4.10.1, 4.10.2, 4.10.3
> Reporter: Marco Bungart
> Assignee: Andrea Cosentino
> Priority: Major
> Fix For: 4.12.0, 4.10.4
>
>
> Since camel {{4.10.1}}, the following code:
> {code:java}
> public class MyTimerRoute extends RouteBuilder {
> @Override
> public void configure() {
> // @formatter:off
> from(
> timer("my-timer")
> .fixedRate(true)
> .period(Duration.ofSeconds(1).toMillis()))
> .process(exchange -> {
> AttachmentMessage message =
> exchange.getMessage(AttachmentMessage.class);
> Path filePath = Files.createTempFile("attachment", "tmp");
> message.addAttachment("foo", new DataHandler(new
> FileDataSource(filePath.toFile())));
> message.removeAttachment("foo");
> boolean hasAttachments = message.hasAttachments();
> exchange.setProperty("hasAttachments", hasAttachments);
> exchange.setProperty("numAttachments",
> message.getAttachments().size());
> })
> .log("hasAttachment: ${exchangeProperty.hasAttachments}")
> .log("# attachments: ${exchangeProperty.numAttachments}");
> // @formatter:on
> }
> }
> {code}
> produces the following, inconsistent output:
> {code}
> ...
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: true
> [) thread #2 - timer://my-timer] route1 INFO #
> attachments: 0
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: true
> [) thread #2 - timer://my-timer] route1 INFO #
> attachments: 0
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: true
> ...
> {code}
> ---
> Reproducer:
> 1. Clone https://github.com/turing85/camel-attachment-bug
> {code:bash}
> $ git clone https://github.com/turing85/camel-attachment-bug.git \
> && camel-attachment-bug
> {code}
> 2. Notice that the camel version is set to {{4.10.1}}
> {code:bash}
> $ grep -i '<camel.version>' pom.xml
> <camel.version>4.10.1</camel.version>
> {code}
> 3. build and start the application
> {code:bash}
> $ mvn clean package && java -jar
> target/camel-attachment-bug-999-SNAPSHOT-executable-jar.jar
> {code}
> 4. Notice the inconsistent output
> {code}
> ...
> [ main] MainSupport INFO Apache
> Camel (Main) 4.10.1 is starting
> [ main] BaseMainSupport INFO
> Classpath scanning enabled from base package: de.turing85.camel.attachment.bug
> [ main] AbstractCamelContext INFO Apache
> Camel 4.10.1 (camel-1) is starting
> [ main] AbstractCamelContext INFO Routes
> startup (total:1)
> [ main] AbstractCamelContext INFO
> Started route1 (timer://my-timer)
> [ main] AbstractCamelContext INFO Apache
> Camel 4.10.1 (camel-1) started in 8ms (build:0ms init:0ms start:8ms
> boot:376ms)
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: true
> [) thread #2 - timer://my-timer] route1 INFO #
> attachments: 0
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: true
> [) thread #2 - timer://my-timer] route1 INFO #
> attachments: 0
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: true
> [) thread #2 - timer://my-timer] route1 INFO #
> attachments: 0
> ...
> {code}
> 5. Downgrade camel to {{4.10.0}}
> {code:bash}
> $ sed -i 's@<camel\.version>.*@<camel.version>4.10.0</camel.version>@g'
> pom.xml \
> && grep -i '<camel.version>' pom.xml
> <camel.version>4.10.0</camel.version>
> {code}
> 6. Re-build and re-run the application
> {code:bash}
> $ mvn clean package && java -jar
> target/camel-attachment-bug-999-SNAPSHOT-executable-jar.jar
> {code}
> 7. Notice that the output shows consistent information
> {code}
> ...
> [ main] MainSupport INFO Apache
> Camel (Main) 4.10.0 is starting
> [ main] BaseMainSupport INFO
> Classpath scanning enabled from base package: de.turing85.camel.attachment.bug
> [ main] AbstractCamelContext INFO Apache
> Camel 4.10.0 (camel-1) is starting
> [ main] AbstractCamelContext INFO Routes
> startup (total:1)
> [ main] AbstractCamelContext INFO
> Started route1 (timer://my-timer)
> [ main] AbstractCamelContext INFO Apache
> Camel 4.10.0 (camel-1) started in 9ms (build:0ms init:0ms start:9ms
> boot:380ms)
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: false
> [) thread #2 - timer://my-timer] route1 INFO #
> attachments: 0
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: false
> [) thread #2 - timer://my-timer] route1 INFO #
> attachments: 0
> [) thread #2 - timer://my-timer] route1 INFO
> hasAttachment: false
> [) thread #2 - timer://my-timer] route1 INFO #
> attachments: 0
> ...
> {code}
> ---
> FTR:
> https://camel.zulipchat.com/#narrow/channel/257298-camel/topic/camel.204.2E10.2E1.20and.20attachments
--
This message was sent by Atlassian Jira
(v8.20.10#820010)