JDBC Deadlock in ORACLETIMEOUTTHREADPERVM and T4CCONNECTION when Using JDBC 11.2 with WebLogic 10.3 or 12.1

(Doc ID 1423425.1)

Last updated on MARCH 08, 2017

Applies to:

JDBC - Version 11.2.0.2.0 to 11.2.0.3.0 [Release 11.2]
Oracle WebLogic Server - Version 10.3.4 to 12.1.2.0.0
Information in this document applies to any platform.

Symptoms


When using JDBC 11.2.0.2 from a WebLogic Server 10.3.4 application or JDBC 11.2.0.3 bundled with WebLogic Server 10.3.6.0, 12.1.1.0, and 12.1.2.0 , the following deadlock is generated:


DEADLOCK DETECTED:
==================

[deadlocked thread] [STUCK] ExecuteThread: '115' for queue: 'weblogic.kernel.Default (self-tuning)':
---------------------------------------------------------------------------------------------------
Thread '[STUCK] ExecuteThread: '115' for queue: 'weblogic.kernel.Default (self-tuning)'' is waiting to acquire lock 'oracle.jdbc.driver.OracleTimeoutThreadPerVM@163e11' that is held by thread 'OracleTimeoutPollingThread'

Stack trace:
------------
oracle.jdbc.driver.OracleTimeoutThreadPerVM.cancelTimeout(OracleTimeoutThreadPerVM.java:116)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1354)
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576)
oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java:172)
org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2594)
org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2494)
org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2821)
org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:113)
org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:185)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:795)
sun.reflect.GeneratedMethodAccessor880.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365)
$Proxy3191.flush(Unknown Source)
sun.reflect.GeneratedMethodAccessor880.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
$Proxy3191.flush(Unknown Source)
com.att.bbnms.lightspeed.so.dao.AbstractFlowableDaoJpa.flush(AbstractFlowableDaoJpa.java:190)
com.att.bbnms.lightspeed.common.dao.DaoSupport.update(DaoSupport.java:113)
com.att.bbnms.lightspeed.so.dao.AbstractFlowableDaoJpa.update(AbstractFlowableDaoJpa.java:27)
sun.reflect.GeneratedMethodAccessor980.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
$Proxy3263.update(Unknown Source)
com.att.bbnms.lightspeed.workflow.mgr.WorkFlowManagerImpl.processMessage(WorkFlowManagerImpl.java:96)
sun.reflect.GeneratedMethodAccessor981.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
$Proxy3379.processMessage(Unknown Source)
com.att.bbnms.lightspeed.workflow.dispatch.BaseWorkflowRequestAction.execute(BaseWorkflowRequestAction.java:32)
com.att.bbnms.lightspeed.common.dispatch.DispatcherMdbServiceImpl.handleDispatchMessage(DispatcherMdbServiceImpl.java:154)
com.att.bbnms.lightspeed.common.dispatch.DispatcherMdbServiceImpl.executeMessage(DispatcherMdbServiceImpl.java:99)
sun.reflect.GeneratedMethodAccessor976.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
$Proxy3356.executeMessage(Unknown Source)
com.att.bbnms.lightspeed.common.dispatch.CommonDispatcherMdb.onMessage(CommonDispatcherMdb.java:55)
weblogic.ejb.container.internal.MDListener.execute(MDListener.java:519)
weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:424)
weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:326)
weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4659)
weblogic.jms.client.JMSSession.execute(JMSSession.java:4345)
weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3821)
weblogic.jms.client.JMSSession.access$000(JMSSession.java:115)
weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5170)
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
weblogic.work.ExecuteThread.run(ExecuteThread.java:176)

[deadlocked thread] OracleTimeoutPollingThread:
----------------------------------------------
Thread 'OracleTimeoutPollingThread' is waiting to acquire lock 'oracle.jdbc.driver.T4CConnection@303d1a' that is held by thread '[STUCK] ExecuteThread: '115' for queue: 'weblogic.kernel.Default (self-tuning)''

Stack trace:
------------
oracle.jdbc.driver.PhysicalConnection.setUsable(PhysicalConnection.java:10908)
oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:121)
oracle.jdbc.driver.DatabaseError.createSqlException(DatabaseError.java:191)
oracle.jdbc.driver.DatabaseError.createSqlException(DatabaseError.java:258)
oracle.jdbc.driver.DatabaseError.createSqlException(DatabaseError.java:482)
oracle.jdbc.driver.T4CConnection.cancelOperationOnServer(T4CConnection.java:886)
oracle.jdbc.driver.OracleStatement.doCancel(OracleStatement.java:3296)
oracle.jdbc.driver.OracleStatement.cancel(OracleStatement.java:3266)
oracle.jdbc.driver.OracleTimeoutThreadPerVM.interruptIfAppropriate(OracleTimeoutThreadPerVM.java:170)
oracle.jdbc.driver.OracleTimeoutPollingThread.pollOnce(OracleTimeoutPollingThread.java:204)
oracle.jdbc.driver.OracleTimeoutPollingThread.run(OracleTimeoutPollingThread.java:158)

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms