Erik Domstad created AMQ-6157:
---------------------------------
Summary: Thread leak when failover fails to connect at startup
Key: AMQ-6157
URL: https://issues.apache.org/jira/browse/AMQ-6157
Project: ActiveMQ
Issue Type: Bug
Environment: Tomee plus 1.7.2 which includes ActiveMQ 5.10.0
Linux tomee 3.13.0-49-generic #83-Ubuntu SMP Fri Apr 10 20:11:33 UTC 2015
x86_64 x86_64 x86_64 GNU/Linux
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
Reporter: Erik Domstad
I have configured several brokers and sometimes one of them is not available
when the application server is started.
When left running the amount of threads slowly builds up, depending how often
reconnect fails, and consumes more and more memory
To reproduce I have deliberately configured failover with a host that is not
reachable
{code}
failover:(tcp://host.not.found:1234?keepAlive=true&wireFormat.maxInactivityDuration=0&daemon=true)?maxReconnectAttempts=2&startupMaxReconnectAttempts=1)
{code}
When I start Tomee, AMQ is not able to connect as expected
{code}
Feb 04, 2016 1:13:27 PM
org.apache.activemq.transport.failover.FailoverTransport doReconnect
SEVERE: Failed to connect to
[tcp://host.not.found:6523?keepAlive=true&wireFormat.maxInactivityDuration=0&daemon=true]
after: 1 attempt(s)
{code}
For each reconnect attempt a new thread is created and left waiting for a lock.
These threads seem to wait indefinately
{code}
"ActiveMQ Connection Executor: unconnected" #75 daemon prio=5 os_prio=0
tid=0x00007f083c040000 nid=0xfaa waiting on condition [0x00007f0824fc1000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c080aa78> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at
java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)