Hi,
It looks like an bug of DefaultUnitOfWork, I just create a JIRA[1] for
it and will commit a quick fix for it.
Thanks for reporting this.
[1]https://issues.apache.org/jira/browse/CAMEL-4264
On 7/25/11 4:59 PM, m.schm...@icw.de wrote:
Hi *,
we're seeing the exception below happening randomly under load. It stems
from
org/apache/camel/impl/DefaultUnitOfWork.java:
public RouteContext popRouteContext() {
if (routeContextStack.isEmpty()) {
return null;
}
return routeContextStack.pop();
}
It seems the stack gets empty inbetween the empty-check and the pop
operation.
What about doing something like this, to prevent this inconsistency:
public RouteContext popRouteContext() {
synchronized (routeContextStack) {
if (routeContextStack.isEmpty()) {
return null;
}
return routeContextStack.pop();
}
}
should i file a JIRA issue for this?
cheers,
Matthias
java.util.EmptyStackException
at java.util.Stack.peek(Stack.java:85)
at java.util.Stack.pop(Stack.java:67)
at
org.apache.camel.impl.DefaultUnitOfWork.popRouteContext(DefaultUnitOfWork.java:226)
at
org.apache.camel.processor.DefaultChannel$1.done(DefaultChannel.java:260)
at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:330)
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:113)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:91)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85)
at
org.apache.camel.processor.aggregate.AggregateProcessor$1.run(AggregateProcessor.java:397)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
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)
Matthias Schmidt | Senior Software Engineer | Development& Delivery
InterComponentWare AG | Altrottstraße 31 | 69190 Walldorf (Baden) |
Germany
Tel.: +49 (0) 6227 385 333 81 | Fax: +49 (0) 6227 385 471
m.schm...@icw.de | www.icw.de
InterComponentWare AG:
Vorstand: Peter Kirschbauer (Vors.), Jörg Stadler
Aufsichtsratsvors.: Prof. Dr. Christof Hettich
Firmensitz: 69190 Walldorf, Altrottstraße 31
AG Mannheim HRB 351761 / USt.-IdNr.: DE 198388516
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang