[JBoss JIRA] (JBJCA-1352) IBM MQ deadlock on shutdown
by Flavia Rainone (JIRA)
[ https://issues.jboss.org/browse/JBJCA-1352?page=com.atlassian.jira.plugin... ]
Flavia Rainone commented on JBJCA-1352:
---------------------------------------
The deadlock was introduced long ago by JBJCA-1190. There is a check in {{AbstractConnectionManager#returnManagedConnection}} (line 724ish) that will force a gracefully prepared shutdown to occur now if the pool is idle and shutdown is prepared. Unfortunately, {{if (shutdown.get())}} can also check if the server is shutting down instead of a prepared shutdown. When that occurs, it is 100% guaranteed shutdown will be executing on another thread and hence the potential for deadlock. I am incrementing that check to verify is there is really a scheduled unfullfilled shutdown in place, and I am making shutdown no longer fully synchronized (but still multi-threaded safe). Let's see if all tests in wildfly pass with that fix.
[~maeste] / [~simkam] Do you know of particular Wildfly/EAP tests I should run this PR with to validate nothing is broken?
> IBM MQ deadlock on shutdown
> ---------------------------
>
> Key: JBJCA-1352
> URL: https://issues.jboss.org/browse/JBJCA-1352
> Project: IronJacamar
> Issue Type: Bug
> Components: AS
> Affects Versions: WildFly/IronJacamar 1.4.2.Final
> Environment: JBoss EAP 7.0.4
> Reporter: Doug Grove
> Assignee: Flavia Rainone
>
> Sporadically, on shut down, IBM MQ and JBoss will deadlock. This does not occur on EAP 6.
> The Deadlocking threads are
> [1]
> ~~~
> ServerService Thread Pool -- 63" #183 prio=5 os_prio=0 tid=0x00000000021ef800 nid=0x50e2 waiting for monitor entry [0x00007fef8451a000]
> java.lang.Thread.State: BLOCKED (on object monitor)
> at com.ibm.mq.connector.outbound.ConnectionEventHandler.removeListener(ConnectionEventHandler.java:93)
> - waiting to lock <0x000000009be01318> (a com.ibm.mq.connector.outbound.ConnectionEventHandler)
> at com.ibm.mq.connector.outbound.ManagedConnectionImpl.removeConnectionEventListener(ManagedConnectionImpl.java:434)
> at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.doDestroy(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1376)
> at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.flush(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:882)
> at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.shutdown(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1065)
> at org.jboss.jca.core.connectionmanager.pool.AbstractPool.shutdown(AbstractPool.java:930)
> - locked < 0x000000008d09b340> (a org.jboss.jca.core.connectionmanager.pool.strategy.OnePool)
> at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.shutdown(AbstractConnectionManager.java:285)
> - locked < 0x000000008d09b2e0> (a org.jboss.jca.core.connectionmanager.notx.NoTxConnectionManagerImpl)
> at org.jboss.as.connector.services.resourceadapters.deployment.AbstractResourceAdapterDeploymentService.unregisterAll(AbstractResourceAdapterDeploymentService.java:192)
> at org.jboss.as.connector.services.resourceadapters.deployment.AbstractResourceAdapterDeploymentService$3.run(AbstractResourceAdapterDeploymentService.java:346)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> at org.jboss.threads.JBossThread.run(JBossThread.java:320)
> ~~~
> [2]
> ~~~
> "DefaultMessageListenerContainer-2" #162 prio=5 os_prio=0 tid=0x0000000001d7a800 nid=0x46bf waiting for monitor entry [0x00007fef70a7d000]
> java.lang.Thread.State: BLOCKED (on object monitor)
> at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.shutdown(AbstractConnectionManager.java:281)
> - waiting to lock <0x000000008d09b2e0> (a org.jboss.jca.core.connectionmanager.notx.NoTxConnectionManagerImpl)
> at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.returnManagedConnection(AbstractConnectionManager.java:724)
> at org.jboss.jca.core.connectionmanager.listener.NoTxConnectionListener.connectionClosed(NoTxConnectionListener.java:93)
> at com.ibm.mq.connector.outbound.ConnectionEventHandler.fireEvent(ConnectionEventHandler.java:135)
> - locked < 0x000000009be01318> (a com.ibm.mq.connector.outbound.ConnectionEventHandler)
> at com.ibm.mq.connector.outbound.ManagedConnectionImpl.fireConnectionClosed(ManagedConnectionImpl.java:784)
> at com.ibm.mq.connector.outbound.ConnectionWrapper.close(ConnectionWrapper.java:337)
> at org.springframework.jms.connection.ConnectionFactoryUtils.releaseConnection(ConnectionFactoryUtils.java:80)
> at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:358)
> at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:255)
> at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1166)
> at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1158)
> at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1055)
> at java.lang.Thread.run(Thread.java:745)
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 9 months
[JBoss JIRA] (WFLY-9096) JMS client fails to connect with SSL on IBM JDK 8
by Jan Kalina (JIRA)
[ https://issues.jboss.org/browse/WFLY-9096?page=com.atlassian.jira.plugin.... ]
Jan Kalina edited comment on WFLY-9096 at 7/24/17 4:08 AM:
-----------------------------------------------------------
Adding reasonable default into *messaging-activemq* subsystem is blocked by ARTEMIS-1299.
For now can be resolved in test, by setting *enabled-protocols* in test setup task:
https://issues.jboss.org/secure/attachment/12422489/commit-c333ea8-fix
{code}
jboss-hornetq-testsuite/common-tests/src/main/java/org/jboss/qa/hornetq/test/prepares/specific/ElytronSubsystemWithSSLContextPrepare.java:
Map<String, String> httpConnectorParams = new HashMap<String, String>();
httpConnectorParams.put("ssl-enabled", "true");
+ httpConnectorParams.put("enabled-protocols", "TLSv1.1,TLSv1.2");
jmsOperations.createHttpConnector(HTTPS_CONNECTOR_NAME, HTTPS_LISTENER, httpConnectorParams, HTTPS_ACCEPTOR_NAME);
{code}
was (Author: honza889):
Adding reasonable default into *messaging-activemq* subsystem is blocked by ARTEMIS-1299.
For now can be resolved in test, by setting *enabled-protocols* in test setup task:
https://issues.jboss.org/secure/attachment/12422489/commit-c333ea8-fix
> JMS client fails to connect with SSL on IBM JDK 8
> -------------------------------------------------
>
> Key: WFLY-9096
> URL: https://issues.jboss.org/browse/WFLY-9096
> Project: WildFly
> Issue Type: Bug
> Components: JMS, Security
> Affects Versions: 11.0.0.Alpha1
> Environment: IBM JDK 8:
> {code}
> $ java -version
> java version "1.8.0"
> Java(TM) SE Runtime Environment (build pxi3280sr4fp2-20170322_01(SR4 FP2))
> IBM J9 VM (build 2.8, JRE 1.8.0 Linux x86-32 20170314_340265 (JIT enabled, AOT enabled)
> J9VM - R28_20170314_2309_B340265
> JIT - tr.r14.java.green_20170314_134138
> GC - R28_20170314_2309_B340265
> J9CL - 20170314_340265)
> JCL - 20170318_01 based on Oracle jdk8u121-b13
> {code}
> Reporter: Jan Kalina
> Assignee: Jan Kalina
> Priority: Critical
> Labels: eap7.1-risks-mitigation
>
> If server is configured to authenticate JMS client with SSL configured using Elytron SSLContext then if client is using IBM JDK 8, authentication fails with:
> {code}
> ERROR: AMQ214016: Failed to create netty connection
> java.nio.channels.ClosedChannelException
> at io.netty.handler.ssl.SslHandler.channelInactive(...)(Unknown Source)
> Producer got exception and ended:javax.jms.JMSException: Failed to create session factory
> javax.jms.JMSException: Failed to create session factory
> at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:757)
> at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:265)
> at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:260)
> at ProducerTransSession.run(ProducerTransSession.java:75)
> Caused by: ActiveMQNotConnectedException[errorType=NOT_CONNECTED message=AMQ119007: Cannot connect to server(s). Tried with all available servers.]
> at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:787)
> at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:755)
> ... 3 more
> {code}
> If client uses Oracle JDK 8 or SSL authentication is configured on http listener using PicketBox then client connects successfully.
> Issue is under investigation.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 9 months