My Oracle Support Banner

Coherence Proxy 节点上与OldCache.removeMapListener 和 Channel.registerRequest有关的两个线程栈发现死锁问题 (Doc ID 2176897.1)

Last updated on MARCH 02, 2020

适用于:

Oracle Coherence - 版本 12.1.3.0.0 到 12.1.3.0.5 [发行版 12c]
本文档所含信息适用于所有平台

症状

在Coherence Proxy 节点的OldCache.removeMapListener 和 Channel.registerRequest这两个线程栈的栈顶发现死锁,详细的线程栈如下:

"JobThreadPool-4":
at com.tangosol.coherence.component.net.extend.Channel.registerRequest(Channel.CDB:14)
- waiting to lock <0x00000005eaddc600> (a com.tangosol.util.SparseArray)
at com.tangosol.coherence.component.net.extend.Channel.send(Channel.CDB:8)
at com.tangosol.coherence.component.net.extend.RemoteNamedCache$BinaryCache.removeRemoteMapListener(RemoteNamedCache.CDB:16)
at com.tangosol.coherence.component.net.extend.RemoteNamedCache$BinaryCache.removeMapListener(RemoteNamedCache.CDB:37)
at com.tangosol.coherence.component.net.extend.RemoteNamedCache.removeMapListener(RemoteNamedCache.CDB:1)
at com.tangosol.coherence.component.util.SafeNamedCache.removeMapListener(SafeNamedCache.CDB:11)
at com.tangosol.net.cache.CachingMap.unregisterListener(CachingMap.java:1563)
at com.tangosol.net.cache.CachingMap$FrontMapListener.entryDeleted(CachingMap.java:1803)
at com.tangosol.util.MapEvent.dispatch(MapEvent.java:274)
at com.tangosol.util.MapEvent.dispatch(MapEvent.java:226)
at com.tangosol.util.MapListenerSupport.fireEvent(MapListenerSupport.java:573)
at com.tangosol.net.cache.OldCache.dispatchEvent(OldCache.java:1980)
- locked <0x00000005eadef100> (a com.tangosol.net.cache.LocalCache)
at com.tangosol.net.cache.OldCache$Entry.discard(OldCache.java:2400)
at com.tangosol.net.cache.OldCache.removeEvicted(OldCache.java:1594)
- locked <0x00000005eadef100> (a com.tangosol.net.cache.LocalCache)
at com.tangosol.net.cache.LocalCache.removeEvicted(LocalCache.java:548)
- locked <0x00000005eadef100> (a com.tangosol.net.cache.LocalCache)
at com.tangosol.net.cache.OldCache.removeIfExpired(OldCache.java:1618)
- locked <0x00000005eadef100> (a com.tangosol.net.cache.LocalCache)
at com.tangosol.net.cache.OldCache.getEntryInternal(OldCache.java:1554)
at com.tangosol.net.cache.OldCache.evictAll(OldCache.java:527)
at com.tangosol.net.cache.OldCache.evict(OldCache.java:593)
- locked <0x00000005eadef100> (a com.tangosol.net.cache.LocalCache)
at com.tangosol.net.cache.OldCache.getEntry(OldCache.java:195)
at com.tangosol.net.cache.LocalCache.getEntry(LocalCache.java:208)
at com.tangosol.net.cache.OldCache.get(OldCache.java:181)
at com.tangosol.net.cache.LocalCache.get(LocalCache.java:195)
at com.tangosol.net.cache.CachingMap.get(CachingMap.java:472)

"<SERVICENAME>-proxy-service:TcpInitiator":
at com.tangosol.net.cache.OldCache.removeMapListener(OldCache.java:455)
- waiting to lock <0x00000005eadef100> (a com.tangosol.net.cache.LocalCache)
at com.tangosol.net.cache.CachingMap$FrontMapListener.unregister(CachingMap.java:1833)
at com.tangosol.net.cache.CachingMap.unregisterFrontListener(CachingMap.java:1594)
at com.tangosol.net.cache.CachingMap.resetFrontMap(CachingMap.java:1741)
at com.tangosol.net.cache.CachingMap$DeactivationListener.entryDeleted(CachingMap.java:1730)
at com.tangosol.util.MapEvent.dispatch(MapEvent.java:274)
at com.tangosol.coherence.component.util.CacheEvent.dispatchSafe(CacheEvent.CDB:14)
at com.tangosol.coherence.component.net.extend.RemoteNamedCache.unregisterChannel(RemoteNamedCache.CDB:12)
at com.tangosol.coherence.component.net.extend.Channel.closeInternal(Channel.CDB:53)
- locked <0x00000005eaddc600> (a com.tangosol.util.SparseArray)
at com.tangosol.coherence.component.net.extend.Connection.closeInternal(Connection.CDB:24)
- locked <0x00000005d6c8ffd0> (a com.tangosol.util.SparseArray)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.peer.initiator.TcpInitiator$TcpConnection.closeInternal(TcpInitiator.CDB:6)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Peer$MessageFactory$CloseConnection.onRun(Peer.CDB:1)
at com.tangosol.coherence.component.net.extend.message.Request.run(Request.CDB:4)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Peer.onMessage(Peer.CDB:1)
at com.tangosol.coherence.component.net.extend.Channel.execute(Channel.CDB:61)
at com.tangosol.coherence.component.net.extend.Channel.receive(Channel.CDB:26)
at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Peer.onNotify(Peer.CDB:103)
at com.tangosol.coherence.component.util.Daemon.run(Daemon.CDB:45)
at java.lang.Thread.run(Thread.java:745)

Found 1 deadlock.

更改

 

原因

To view full details, 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 a vibrant support community of peers and Oracle experts.