Hi All,
We are having occasional problems with the some app using Camel 3.14.1 rest
routes and running in TomEE. After a while TomEE/Tomcat https interface became
unresponsive.
Looking at the thread dump I can see a lot of threads in such state:
"https-jsse-nio-7443-exec-107" - Thread t@504
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <78a7fac3> (a
java.util.concurrent.CountDownLatch$Sync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
at
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.await(DefaultAsyncProcessorAwaitManager.java:107)
at
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:85)
at
org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:108)
at
org.apache.camel.support.cache.DefaultProducerCache.send(DefaultProducerCache.java:199)
at
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:176)
at
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:172)
at
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:153)
at
org.apache.camel.impl.engine.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:187)
at
org.apache.camel.impl.engine.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:195)
at
org.apache.camel.ProducerTemplate$$OwbNormalScopeProxy0.sendBody(org/apache/camel/ProducerTemplate.java)
Locked ownable synchronizers:
- locked <59e6ab64> (a java.util.concurrent.ThreadPoolExecutor$Worker)
this is how ProducerTemplate is produced (CDI):
@Produces
@ApplicationScoped
@MyProducerTemplate
ProducerTemplate getProducerTemplate() {
return context.createProducerTemplate();
}
And this is how it is injected everywhere it is used (single ApplicationScoped
instance):
@Inject
@MyProducerTemplate
ProducerTemplate producerTemplate;
Is there anything wrong with re-using single instance? If not, what may be the
problem?
Thanks,
Dmitry