Getting out of buffer exception due to slow consumer (EMA C++ OMM API)
I'm building a interactive provider (EMA C++ OMM API) for streaming the market data to different downstream applications, which are Refinitiv Consumer, through TCP socket.
I'm testing the scenario that how my provider behaves when I have very slow consumer connect to it.
I found that the provider will throw an out of buffer exception when I submit the updateMsg.
I'm wondering if there are configurations or control throw that can allow the provider to detect and drop the slow consumer connection such that to avoid the out of buffer exception.
The following is the error message I found in the core dump:
"Internal error: rsslReactorSubmitMsg() failed in OmmIProviderImpl::submit( const UpdateMsg& ).
Error: 1009 ipcDataBuffer() failed, out of output buffers. The output buffer may need to be flushed.
Best Answer
-
Thanks for reaching out to us.
The provider applications are unable to detect that the connected consumer applications are slow consumers because the provider applications don't know how fast the consumer applications process the data. Moreover, typically, the consumer applications themselves don't know that they are slow consumers until the connections have been disconnected.
The application submits data to the API's buffers then the API frees the buffers by flushing data to the network. The out-of-buffer exception indicates that the API was unable to flush data to the network. The cause of the exception could be a network issue or a slow consumer.
I don't think that the EMA API has configurations or other methods to detect slow consumers. RTDS (ADS) also uses the buffer overflow condition to cut channels.
I hope that this information is of help.
0
Answers
-
Thanks for your comment.
I have one more question, assuming I have multiple consumers, one of them is being a slow consumer, if the buffer overflow exception raised, does this exception correspond to the slow consumer only? As you mentioned cutting the channels, do you mean catch the exception and calling `closeChannel()` method manually to close that particular connection?
0 -
The out-of-output buffers exception just indicates that it was unable to get output buffers from the channel so it was able to encode the message to the buffer and send the data. One cause of this issue could be slow consumers but it could be from other network issues.
Typically, the server handles the buffer overflow condition by closing the channels that have this issue. In EMA C++, you can close the connection by using the following method.
refinitiv::ema::access::OmmProvider::closeChannel(UInt64 clientHandle)
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
- 685 Datastream
- 1.4K DSS
- 615 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 252 ETA
- 556 WebSocket API
- 38 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 652 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
- 104 UPA
- 193 TREP Infrastructure
- 228 TRKD
- 917 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 90 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛