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
- 37 Alpha
- 167 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 707 Datastream
- 1.5K DSS
- 633 Eikon COM
- 5.2K Eikon Data APIs
- 15 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 7 Trading API
- 3K Elektron
- 1.5K EMA
- 259 ETA
- 571 WebSocket API
- 41 FX Venues
- 16 FX Market Data
- 2 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 26 Messenger Bot
- 4 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 284 Open PermID
- 47 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 25 RDMS
- 2.2K Refinitiv Data Platform
- 12 CFS Bulk File/TM3
- 903 Refinitiv Data Platform Libraries
- 5 LSEG Due Diligence
- 1 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
- 126 Open DACS
- 1.1K RFA
- 108 UPA
- 197 TREP Infrastructure
- 232 TRKD
- 921 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 106 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛