camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Aggregator problem with files (Camel 2.3)
Date Fri, 04 Jun 2010 12:00:12 GMT
On Fri, Jun 4, 2010 at 1:56 PM, ankelee <andreasasmuss@gmail.com> wrote:
>
> You think it might be a bug?
>

Yeah as there is a NPE error in the camel-core.
It was expected to find an aggregated exchange using a correlation key
but it could not, it returned null.

So if you got a sample then I can debug it to see where the problem lies.



> "And why does the Z file rollback?"
>
> That is the question :)
>
>
>
> Claus Ibsen-2 wrote:
>>
>> Hi
>>
>> Can you create a JIRA ticket and if possible attach a small test /
>> unit test about this.
>>
>> And why does the Z file rollback?
>>
>>
>> On Fri, Jun 4, 2010 at 1:22 PM, ankelee <andreasasmuss@gmail.com> wrote:
>>>
>>> I'm trying to use the aggregator like so:
>>>
>>> <route id="BundlingRoute" autoStartup="true">
>>>        <from
>>> uri="file:{{directory.outgoing}}?include=\A{{edifact.messagePrefix}}.*"
>>> />
>>>        <to uri="xslt:file:{{schema.edifactToIntermediate}}" />
>>>        <setHeader headerName="virNo">
>>>                <xpath>
>>>                        /edi/transaction[1]/@VirNo
>>>                </xpath>
>>>        </setHeader>
>>>        <unmarshal ref="jaxbIntermediate" />
>>>        <aggregate strategyRef="EdifactAggregator"
>>> completionFromBatchConsumer="true">
>>>                <correlationExpression>
>>>                        <header>virNo</header>
>>>                </correlationExpression>
>>>                <marshal ref="jaxbIntermediate" />
>>>                <to uri="xslt:file:{{schema.intermediateToEdifact}}"
/>
>>>                <to uri="file:data/out/outbox/vans_sim" />
>>>        </aggregate>
>>> </route>
>>>
>>> This works fine, aggregation etc. works, until I reach the last file of
>>> the
>>> directory I get an exception:
>>> This causes a loop where the file rolls back and camel reads it and rolls
>>> back etc.
>>>
>>> This only happens if the last file in the directory is not in a series
>>> that
>>> will be aggregated.
>>> so if I have:
>>>
>>> fileA1
>>> fileA2
>>> fileB1
>>> fileC1
>>> fileC2
>>>
>>> This works as intended. I get 3 aggregated files on the other end:
>>> fileA1,
>>> fileB1, fileC1.
>>> But if I do:
>>>
>>> fileA1
>>> fileA2
>>> fileC1
>>> fileC2
>>> fileZ1
>>>
>>> This fails and I get fileA1, fileC1 outputted. FileZ1 is getting rolled
>>> back
>>> and throws the below exception:
>>>
>>> [t/outbox?include=%5CAOPSIGE_.*] GenericFileOnCompletion        WARN
>>> Rollback file strategy:
>>> org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy@4c7e10
>>> for file: GenericFile[OPSIGE_single3.edi]
>>> [t/outbox?include=%5CAOPSIGE_.*] DefaultErrorHandler            ERROR
>>> Failed
>>> delivery for exchangeId: c09eebfc-7d5e-49dc-82e1-dd4ffb1f5de3. Exhausted
>>> after delivery attempt: 1 caught: java.lang.NullPointerException
>>> java.lang.NullPointerException
>>>        at
>>> org.apache.camel.processor.aggregate.AggregateProcessor.doAggregation(AggregateProcessor.java:249)
>>>        at
>>> org.apache.camel.processor.aggregate.AggregateProcessor.process(AggregateProcessor.java:182)
>>>        at
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>        at
>>> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)
>>>        at
>>> org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)
>>>        at
>>> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:97)
>>>        at
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>        at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:185)
>>>        at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:151)
>>>        at
>>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:89)
>>>        at
>>> org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
>>>        at
>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)
>>>        at org.apache.camel.processor.Pipeline.process(Pipeline.java:75)
>>>        at
>>> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:70)
>>>        at
>>> org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
>>>        at
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>        at
>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:269)
>>>        at
>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:137)
>>>        at
>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:103)
>>>        at
>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:98)
>>>        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)
>>> [t/outbox?include=%5CAOPSIGE_.*] GenericFileOnCompletion        ERROR
>>> Caused
>>> by: [java.lang.NullPointerException - null]
>>> java.lang.NullPointerException
>>>        at
>>> org.apache.camel.processor.aggregate.AggregateProcessor.doAggregation(AggregateProcessor.java:249)
>>>        at
>>> org.apache.camel.processor.aggregate.AggregateProcessor.process(AggregateProcessor.java:182)
>>>        at
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>        at
>>> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)
>>>        at
>>> org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)
>>>        at
>>> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:97)
>>>        at
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>        at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:185)
>>>        at
>>> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:151)
>>>        at
>>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:89)
>>>        at
>>> org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
>>>        at
>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:228)
>>>        at org.apache.camel.processor.Pipeline.process(Pipeline.java:75)
>>>        at
>>> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:70)
>>>        at
>>> org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
>>>        at
>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>        at
>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:269)
>>>        at
>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:137)
>>>        at
>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:103)
>>>        at
>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:98)
>>>        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://old.nabble.com/Aggregator-problem-with-files-%28Camel-2.3%29-tp28778641p28778641.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Author of Camel in Action: http://www.manning.com/ibsen/
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>>
>
> --
> View this message in context: http://old.nabble.com/Aggregator-problem-with-files-%28Camel-2.3%29-tp28778641p28778973.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Mime
View raw message