[ 
https://issues.apache.org/activemq/browse/CAMEL-2824?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tarjei Huse updated CAMEL-2824:
-------------------------------

    Attachment: DeadlockTestCase.java

I have managed to recreate the deadlock using the testcase above on a different 
computer, linux kernel and JVM. 

Found one Java-level deadlock:
=============================
"Camel Thread 0 - AggregateTimeoutChecker":
  waiting for ownable synchronizer 0xb0ff7060, (a 
java.util.concurrent.locks.ReentrantLock$FairSync),
  which is held by "main"
"main":
  waiting for ownable synchronizer 0xb0ffef28, (a 
java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "Camel Thread 0 - AggregateTimeoutChecker"

Java stack information for the threads listed above:
===================================================
"Camel Thread 0 - AggregateTimeoutChecker":
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xb0ff7060> (a 
java.util.concurrent.locks.ReentrantLock$FairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:778)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1114)
        at 
java.util.concurrent.locks.ReentrantLock$FairSync.lock(ReentrantLock.java:201)
        at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
        at 
org.apache.camel.processor.aggregate.AggregateProcessor$AggregationTimeoutMap.onEviction(AggregateProcessor.java:575)
        at 
org.apache.camel.processor.aggregate.AggregateProcessor$AggregationTimeoutMap.onEviction(AggregateProcessor.java:548)
        at 
org.apache.camel.util.DefaultTimeoutMap.purge(DefaultTimeoutMap.java:166)
        at 
org.apache.camel.util.DefaultTimeoutMap.run(DefaultTimeoutMap.java:121)
        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)
"main":
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0xb0ffef28> (a 
java.util.concurrent.locks.ReentrantLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:778)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1114)
        at 
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:186)
        at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
        at 
org.apache.camel.util.DefaultTimeoutMap.put(DefaultTimeoutMap.java:78)
        at 
org.apache.camel.processor.aggregate.AggregateProcessor.isCompleted(AggregateProcessor.java:318)
        at 
org.apache.camel.processor.aggregate.AggregateProcessor.doAggregation(AggregateProcessor.java:235)
        at 
org.apache.camel.processor.aggregate.AggregateProcessor.process(AggregateProcessor.java:182)
        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.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.direct.DirectProducer.process(DirectProducer.java:44)
        at 
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:230)
        at 
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:209)
        at 
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:189)
        at 
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:208)
        at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:118)
        at 
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:104)
        at 
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:344)
        at 
org.apache.camel.core.DeadlockTestCase.sendMsg(DeadlockTestCase.java:82)
        at 
org.apache.camel.core.DeadlockTestCase.testDeadlock(DeadlockTestCase.java:59)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.springframework.test.context.junit4.SpringTestMethod.invoke(SpringTestMethod.java:160)
        at 
org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod(SpringMethodRoadie.java:233)
        at 
org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(SpringMethodRoadie.java:333)
        at 
org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:217)
        at 
org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:197)
        at 
org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:143)
        at 
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:160)
        at 
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
        at 
org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
        at 
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
        at 
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
        at 
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
        at 
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:97)
        at 
org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
        at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
        at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
        at 
org.apache.maven.surefire.booter.SurefireBooter.run(SurefireBooter.java:241)
        at 
org.apache.maven.plugin.surefire.SurefirePlugin.execute(SurefirePlugin.java:537)
        at 
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at 
org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

Found 1 deadlock.


> Deadlock in org.apache.camel.util.DefaultTimeoutMap
> ---------------------------------------------------
>
>                 Key: CAMEL-2824
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2824
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.3.0
>         Environment: Centos 4, Java HotSpot(TM) Server VM (11.0-b15 mixed 
> mode)
>            Reporter: Tarjei Huse
>         Attachments: deadlock.log, DeadlockTestCase.java
>
>
> After running a camel route with a camel Aggregator for a while, I get a 
> deadlock in  org.apache.camel.util.DefaultTimeoutMap. A full processdump is 
> attached to this bug.
> I have also tried to recreate this as failing testcase, but without any luck 
> so far. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to