My Oracle Support Banner

CachedCoordinator Cache Initialization Blocks a Thread for a Very Long Time (Doc ID 1496472.1)

Last updated on NOVEMBER 05, 2016

Applies to:

Oracle Weblogic Server - Version 10.3.6 to 10.3.6
Information in this document applies to any platform.


In case of two phase commit, when a cached coordinator is required e.g. in order to commit a transaction involving another WLS node resource within a cluster, the initialization of the cached remote coordinator stub makes threads always wait for the whole timeout value (20s+). This sometimes causes entire business transactions to roll-back because of transaction time-out.
The time lost in processing is 20s+ each time, which precisely is the default value of the weblogic.JTA.ContactCoordinatorWaitSeconds parameter.


Thread stack for the same looks like:


"[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00002aaab4e96800 nid=0x204b in Object.wait() [0x0000000043b13000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000edb4e038> (a java.lang.String)
    at weblogic.transaction.internal.CoordinatorFactory.getCachedCoordinator(
    - locked <0x00000000edb4e038> (a java.lang.String)
    at weblogic.transaction.internal.JNDIAdvertiser.getSubCoordinator(
    at weblogic.transaction.internal.ServerSCInfo.getSubCoordinator(
    at weblogic.transaction.internal.ServerSCInfo.isAccessible(
    at weblogic.transaction.internal.ServerTransactionImpl.assignNonLocalResourcesToOtherSCs(
    at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(
    at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(
    at weblogic.transaction.internal.ServerTransactionImpl.commit(
    at weblogic.ejb.container.internal.MDListener.execute(
    at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(
    at weblogic.ejb.container.internal.MDListener.onMessage(
    at weblogic.jms.client.JMSSession.onMessage(
    at weblogic.jms.client.JMSSession.execute(
    at weblogic.jms.client.JMSSession.executeMessage(
    at weblogic.jms.client.JMSSession.access$000(
    at weblogic.jms.client.JMSSession$



To view full details, sign in with your My Oracle Support account.

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

In this Document

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.