Deadlock at OMMConsumer

There is deadlock at OMMConsumer while un-registering ric. Please advise.
Below are logs from application.
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
at com.refinitiv.ema.access.OmmBaseImpl.unregister(OmmBaseImpl.java:622)
at com.refinitiv.ema.access.OmmConsumerImpl.unregister(OmmConsumerImpl.java:279)
Answers
-
Thank you for reaching out to us.
Typically, the deadlock happens with two threads and two resources. Please share the full call stack of all threads.
Moreover, please check the version of EMA Java that you are using. The current version is RTSDK Java 2.3.0.L2 aka EMA/ETA 3.9.0.L2. You may check the CHANGELOG.md file for the deadlock issues fixed in the previous releases.
You can download the lastest version of EMA Java from the Software Download. It is in the Product family: MDS API and Products: LSEG Real-Time SDK.
0 -
we are using ema-3.7.3.0.jar and eta-3.7.3.0.jar. I believe deadlock was fixed in earlier version :
3.7.0.L1. Please advise.
"RFA Dispatch Thread" Id=66 in WAITING on lock=java.util.concurrent.locks.ReentrantLock$NonfairSync@20159c5
owned by pool-5-thread-773 Id=978
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
at ubs.shell.ema.EmaSubscriptionListenerCached.putRICToCache(EmaSubscriptionListenerCached.java:51)
at ubs.shell.ema.EmaSubscriptionListenerCached.onMessage(EmaSubscriptionListenerCached.java:41)
at ubs.shell.ema.EmaMessageHandler.onMessage(EmaMessageHandler.java:33)
at ubs.shell.ema.EmaConnection.processEMAPublisherRefreshMessage(EmaConnection.java:664)
Another Thread :
"pool-5-thread-773" Id=978 in WAITING on lock=java.util.concurrent.locks.ReentrantLock$NonfairSync@cc6a7f5
owned by RFA Dispatch Thread Id=66
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
at com.refinitiv.ema.access.OmmBaseImpl.unregister(OmmBaseImpl.java:622)
at com.refinitiv.ema.access.OmmConsumerImpl.unregister(OmmConsumerImpl.java:279)
at ubs.shell.ema.EmaConnection$EMAConsumerSubscriber.unsubscribe(EmaConnection.java:582)
0 -
These should not be the full call stack.
This one should be the application lock.
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
at ubs.shell.ema.EmaSubscriptionListenerCached.putRICToCache(EmaSubscriptionListenerCached.java:51)This one is the EMA lock.
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
at com.refinitiv.ema.access.OmmBaseImpl.unregister(OmmBaseImpl.java:622)It looks like to be a deadlock between the EMA Lock and application owned lock. I assume that this RFA Dispatch Thread owns the EMA lock while this pool-5-thread-773 thread owns the application lock.
Please verify the application logic or contact the API support team directly via Contact Premium Support to investigate this issue on the API side.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 690 Datastream
- 1.4K DSS
- 629 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 559 WebSocket API
- 39 FX Venues
- 15 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 25 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 279 Open PermID
- 45 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 716 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 106 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 95 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛