EMA OmmConsumer memory leak in C++ API?

We need to switch between hosts in case of unavailability. To do this, we recreate OmmConsumer with new settings (only one OmmConsumer exists at a time). If all hosts are unavailable, the memory leaks out exponentially during 30 attempts, which leads to the process crash. It is empirically established that the memory leak occurs as a result of repeated calls to the OmmConsumer constructor. Advise how to avoid this problem?
Best Answer
-
This issue has been fixed in ESDK 1.4.0.L1.
0
Answers
-
I am not aware of memory leak as you describe - please raise a Premium Support Ticket if you wish to investigate in more detail offline.
Before you do that, I just wanted to check if you aware of the ChannelSet functionality of EMA?
The use of ChannelSets allows you to specify a comma-separated list of channels names. Each Channel definition can point to a different host. Channels in the set will be tried by EMA with each reconnection attempt until a successful connection is
made.Please refer to section 3.1.4 of the EMA C++ Config Guide as well as this article on EMA Config for further details.
0 -
Hi Umer,
When I'm following your Premium Support Ticket link I'm getting
Something Went Wrong
We were unable to retrieve the page you were trying to reach. We don't want to leave you hanging though.
Go back or see other APIs you may be interested in...Thanks.
0 -
We don't have RDC account. We have an agreement that our timeOut issue will be looked at as a good will gesture without RDC account. Thanks.
0 -
A similar use case results in a memory leak in the Java API
0 -
Your Premium Support Ticket link doesn't work
0 -
This would be the case if you are not a named user for your organisation or if your organisation does not have a RDC support membership.
You can check with your Market Data team or your Refinitiv account manager to find out if you do have a named member who can raise a Premium support ticket on your behalf.
In terms of the other Java post, it appears the user opened a Support ticket and closed the ticket after receiving guidance from the RDC team.
If your organisation does not have a Support membership, then you can report your issue on Github and it will be looked at as a best endeavours basis by the support team.
Also, did you try to use the ChannelSets as mentioned above - as this would is the recommended way i.e. letting EMA deal with connectivity issues and failover scenarios - rather than doing it at an application level.
0 -
This would be the case if you are not a named user for your organisation or if your organisation does not have a RDC support membership.
You can check with your Market Data team or your Refinitiv account manager to find out if you do have a named member who can raise a Premium support ticket on your behalf.
If your organisation does not have a Support membership, then you can report your issue on Github and it will be looked at as a best endeavours basis by the support team.
0 -
I'm trying. And as far as I understand - the constructor of the consumer in any case will fail after the specified timeout. Which brings us back to the problem of recreating the consumer with further memory leaks and crash. Or if we set an infinite timeout - we have potential problems with stopping the service when all hosts are unavailable (since the constructor of the consumer will never end)
0 -
Hello @sergey_at_ark
Please be informed that you can submit the issue to development directly via GitHub issue page.
0 -
I do experience the memory leak as well.
Due to some reasons (not important why) I need to dispose (uninitialize) the OmmConsumer and create a new instance of OmmConsumer. However after roughly 27 iterations (destroy OmmConsumer and create new one) the process consumes 16 GB of memory and crashes. Worth mentioning that this happens even if no clients are registered.
The ChannelSet feature is not what I am looking for and it won't help me.
0 -
Thanks for sharing your experience. Please raise a Premium Support Ticket to investigate in more detail offline / raise a bug report.
Thanks.
0 -
Thank you, I have submitted the issue to GitHub.
0 -
Thank you for the suggestion however the premium support link you provided does not work for me. Could you please guide me how to reach the form via the webpage's GUI?
0 -
This issue has been reported on GitHub
https://github.com/Refinitiv/Elektron-SDK/issues/118
JIRA ID: ESDK-3495Based on the latest post from the issue, the development team is working on this issue, and it will be fixed in the next release.
You can change EMA default behavior to log the EMA messages to Stdout as the workaround. We can put EmaConfig.xml to a running directory and then change LoggerType in configuration file to Stdout instead.
DefaultConsumer in the XML file is Consumer_1 and it use Logger_1 therefore we need to change LoggerType in Logger_1 section to LoggerType::Stdout.
<DefaultConsumer value="Consumer_1"/>
<ConsumerList>
<Consumer>
<Name value="Consumer_1"/>
<Channel value="Channel_1"/>
<Logger value="Logger_1"/>
<Dictionary value="Dictionary_1"/>
</Consumer>
…
<Logger>
<Name value="Logger_1"/>
<LoggerType value="LoggerType::Stdout"/>
<LoggerSeverity value="LoggerSeverity:: NoLogMsg"/>
</Logger>
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 中文论坛