OmmProvider.submit seems dead locked on > 2000 RICs
The server in question registers 2000 RICs, and updates all of them at interval of 0.5s. The 2000 RefreshMsg on registration and 4000 UpdateMsg/s are queued, and OmmProvider.submit-ed in a single thread. It all works fine.
However, when the RIC size is raised to 5000, it gets hanged. The thread dump looks like this:
Any help would be greatly appreciated.
Jianping
Best Answer
-
Hello Jianping,
This seems to be a case of resource crunch - most likely network. I can recommend these things to try to identify and remedy the problem:
- Try using the infrastructure tool like TestClient to subscribe to your list of instruments. You can specify the snapshot option in the command line.
- Enable OMM logging in the SDK
- Try to pace out the subscriptions
See more information on how to get the infrastructure tool and usage in this previous discussion.
0
Answers
-
Hello @Jianping
I would recommend that you enable the OMM Logging for the EMA SDK and upload the log file when this deadlock happens. There might be a status message that your app might have missed. If this is connecting to your local RTMDS, then check the ADS logs for server side message as well.
You can also try to pace out the subscriptions in a batch size of 1000 each. The batch size is physically limited by the array size in the SDK as described in this previous discussion -
0 -
Deadlock situations typically involve two threads.
Could you please provide the full thread dump for analysis?
0 -
Hi Gurpreet,
I simplify the use case where I register 5000 Rics without updating, and would expect to receive 5000 RefreshMsg. On registering, I loop through 5000 Rics one by one via registerClient continuously.
On the client side, I only receive 133 RefreshMsg, and the rest of (5000-133) comes with StatusMsg of Timeout, and then 5000 StatusMsg of Channel down.
On the server side, the log records 1062 Incoming reactor message of ReqMsg, which is fewer than 5000 expected. Furthermore, out of these 1062 Incoming reactor message, OmmProviderClient only receives 133 onReqMsg, which it replies back with RefreshMsg. The number of RefreshMsg do match with that in client.
I hope i made it clear.
Jianping
0 -
Hi Gurpreet,
Yes, it looks a case of resource crunch. I interleave 100 Ric registering with 100 ms sleep. All together 5000 Rics are registered successfully. I also want to have a try of batch mode.
Many thanks
Jianping
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
- 14 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 6 Trading API
- 3K Elektron
- 1.5K EMA
- 259 ETA
- 570 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
- 196 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 中文论坛