Hi, I have created a test sample that recreates this issue. Maybe I should
not be using an Aggregator to solve this. Basically I just want to zip
together an incoming message with a message(a response) that I generate on
the basis of the incoming message.

Is this a bug, or am I misusing the Aggregator?

The route is as such:

<route>
        <from uri="file:data/in2?move=backup&amp;moveFailed=error" />
        <split>
                <tokenize token="," />
                <to uri="mock:test" />
                <delay>
                        <constant>50</constant>
                </delay>
        </split>
        <to uri="seda:AggregatorQueue" />                       
</route>

<route>
        <from uri="file:data/in?move=backup&amp;moveFailed=error" />
        <split>
                <tokenize token="," />
                <to uri="mock:test" />
                <delay>
                        <constant>150</constant>
                </delay>
        </split>
        <to uri="seda:AggregatorQueue" />                       
</route>

<route>
        <from uri="seda:AggregatorQueue" />
        <aggregate strategyRef="myStrat" completionSize="2">
                <correlationExpression>
                        <simple>${file:name}</simple>
                </correlationExpression>
                <to uri="file:data/out" />
        </aggregate>
</route>


Aggregator:

public class MyAggregator implements AggregationStrategy {
        public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
                if (oldExchange == null) {
                        return newExchange;
                }
                String oldBody = oldExchange.getIn().getBody(String.class);
                String newBody = newExchange.getIn().getBody(String.class);
                String body = oldBody + "\n+\n" + newBody;
                oldExchange.getIn().setBody(body);
                
                oldExchange.setProperty("CamelFileNameOnly", new
ControlGenerator().getControl() + ".txt");
                return oldExchange;
        }
}

Stacktrace:

2010-11-10 11:22:42,062 ERROR [Camel Thread 0 - file://data/in2]
[org.apache.camel.component.file.GenericFileOnCompletion]: Caused by:
[org.apache.camel.RuntimeCamelException - java.io.FileNotFoundException:
data\in2\test - Copy (9).txt (The system cannot find the file specified)]
org.apache.camel.RuntimeCamelException: java.io.FileNotFoundException:
data\in2\test - Copy (9).txt (The system cannot find the file specified)
        at org.apache.camel.util.ObjectHelper.getScanner(ObjectHelper.java:1246)
        at org.apache.camel.util.ObjectHelper.getScanner(ObjectHelper.java:1232)
        at
org.apache.camel.builder.ExpressionBuilder$40.evaluate(ExpressionBuilder.java:934)
        at
org.apache.camel.impl.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
        at
org.apache.camel.processor.Splitter.createProcessorExchangePairs(Splitter.java:99)
        at
org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:181)
        at org.apache.camel.processor.Splitter.process(Splitter.java:94)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
        at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
        at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
        at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
        at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
        at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:99)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
        at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:299)
        at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:208)
        at
org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:256)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:143)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:78)
        at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:99)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
        at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
        at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
        at
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:322)
        at
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:155)
        at
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121)
        at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.FileNotFoundException: data\in2\test - Copy (9).txt (The
system cannot find the file specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.util.Scanner.<init>(Scanner.java:636)
        at org.apache.camel.util.ObjectHelper.getScanner(ObjectHelper.java:1244)
        ... 39 more
2010-11-10 11:22:42,067 WARN  [Camel Thread 0 - file://data/in2]
[org.apache.camel.component.file.GenericFileOnCompletion]: Rollback file
strategy:
org.apache.camel.component.file.strategy.genericfilerenameprocessstrat...@1e36c0b
for file: GenericFile[test - Copy (9).txt]
2010-11-10 11:22:42,070 ERROR [Camel Thread 0 - file://data/in2]
[org.apache.camel.component.file.GenericFileOnCompletion]: Caused by:
[org.apache.camel.component.file.GenericFileOperationFailedException -
Cannot rename file: GenericFile[test - Copy (9).txt] to:
GenericFile[error\test - Copy (9).txt]]
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot
rename file: GenericFile[test - Copy (9).txt] to: GenericFile[error\test -
Copy (9).txt]
        at
org.apache.camel.component.file.strategy.GenericFileProcessStrategySupport.renameFile(GenericFileProcessStrategySupport.java:100)
        at
org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy.rollback(GenericFileRenameProcessStrategy.java:65)
        at
org.apache.camel.component.file.GenericFileOnCompletion.processStrategyRollback(GenericFileOnCompletion.java:141)
        at
org.apache.camel.component.file.GenericFileOnCompletion.onCompletion(GenericFileOnCompletion.java:93)
        at
org.apache.camel.component.file.GenericFileOnCompletion.onFailure(GenericFileOnCompletion.java:56)
        at
org.apache.camel.util.UnitOfWorkHelper.doneSynchronizations(UnitOfWorkHelper.java:50)
        at 
org.apache.camel.impl.DefaultUnitOfWork.done(DefaultUnitOfWork.java:172)
        at
org.apache.camel.processor.UnitOfWorkProcessor.doneUow(UnitOfWorkProcessor.java:121)
        at
org.apache.camel.processor.UnitOfWorkProcessor.access$000(UnitOfWorkProcessor.java:36)
        at
org.apache.camel.processor.UnitOfWorkProcessor$1.done(UnitOfWorkProcessor.java:106)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:130)
        at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:99)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
        at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
        at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
        at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
        at
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:322)
        at
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:155)
        at
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:121)
        at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)




-- 
View this message in context: 
http://camel.465427.n5.nabble.com/Processed-file-being-read-again-and-is-empty-tp3256771p3258441.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to