Discover Refinitiv
MyRefinitiv Refinitiv Perspectives Careers
Created with Sketch.
All APIs Questions & Answers  Register |  Login
Ask a question
  • Questions
  • Tags
  • Badges
  • Unanswered
Search:
  • Home /
  • Elektron /
  • EMA /
avatar image
Question by dmitry.kozhevnikov · Jul 26, 2019 at 07:17 AM · elektronrefinitiv-realtimeelektron-sdkrrtema-apielektron-message-apiconsumermemory

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?

People who like this

0 Show 0
Comment
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

5 Replies

  • Sort: 
avatar image
REFINITIV
Best Answer
Answer by moragodkrit.chumsri_1 · Dec 26, 2019 at 01:50 AM

This issue has been fixed in ESDK 1.4.0.L1.

Comment

People who like this

0 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

avatar image
REFINITIV
Answer by umer.nalla · Jul 26, 2019 at 09:52 AM

Hi @dmitry.kozhevnikov

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.

Comment

People who like this

0 Show 4 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

avatar image
dmitry.kozhevnikov · Jul 31, 2019 at 04:04 AM 0
Share

A similar use case results in a memory leak in the Java API

https://community.developers.refinitiv.com/questions/28182/ema-ommconsumer-memory-leak-in-java-api.html

avatar image
dmitry.kozhevnikov · Jul 31, 2019 at 04:06 AM 0
Share

Your Premium Support Ticket link doesn't work

avatar image
REFINITIV
umer.nalla ♦♦ dmitry.kozhevnikov · Jul 31, 2019 at 04:57 AM 0
Share

Hi @dmitry.kozhevnikov

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.

avatar image
dmitry.kozhevnikov umer.nalla ♦♦ · Jul 31, 2019 at 09:56 AM 0
Share

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)

avatar image
Answer by sergey_at_ark · Jul 27, 2019 at 10:00 AM

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.

Comment

People who like this

0 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

avatar image
Answer by Anton Marček · Sep 16, 2019 at 07:16 PM

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.

Comment

People who like this

0 Show 2 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

avatar image
REFINITIV
umer.nalla ♦♦ · Sep 17, 2019 at 09:16 AM 0
Share

Hi @Anton Marček

Thanks for sharing your experience. Please raise a Premium Support Ticket to investigate in more detail offline / raise a bug report.

Thanks.

avatar image
Anton Marček umer.nalla ♦♦ · Sep 18, 2019 at 08:47 AM 0
Share

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?

avatar image
REFINITIV
Answer by moragodkrit.chumsri_1 · Oct 01, 2019 at 08:27 AM

This issue has been reported on GitHub
https://github.com/Refinitiv/Elektron-SDK/issues/118
JIRA ID: ESDK-3495

Based 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>


Comment
nawapoom.lohajarernvanich

People who like this

1 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Watch this question

Add to watch list
Add to your watch list to receive emailed updates for this question. Too many emails? Change your settings >
9 People are following this question.

Related Questions

EMA OmmConsumer memory leak in Java API?

(JAVA) Does using interestAfterRefresh(false) remove the need for deregistering items with Elektron?

[EMA C++] DoNotCache and ClearCache in RefreshMessage from the point of view of Consumer Application

Symbol List Request and Refresh Messages

Java out of memory error in batch application

  • Copyright
  • Cookie Policy
  • Privacy Statement
  • Terms of Use
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Alpha
  • App Studio
  • Block Chain
  • Bot Platform
  • Connected Risk APIs
  • DSS
  • Data Fusion
  • Data Model Discovery
  • Datastream
  • Eikon COM
  • Eikon Data APIs
  • Electronic Trading
    • Generic FIX
    • Local Bank Node API
    • Trading API
  • Elektron
    • EMA
    • ETA
    • WebSocket API
  • Intelligent Tagging
  • Legal One
  • Messenger Bot
  • Messenger Side by Side
  • ONESOURCE
    • Indirect Tax
  • Open Calais
  • Open PermID
    • Entity Search
  • Org ID
  • PAM
    • PAM - Logging
  • ProView
  • ProView Internal
  • Product Insight
  • Project Tracking
  • RDMS
  • Refinitiv Data Platform
    • Refinitiv Data Platform Libraries
  • Rose's Space
  • Screening
    • Qual-ID API
    • Screening Deployed
    • Screening Online
    • World-Check One
    • World-Check One Zero Footprint
  • Side by Side Integration API
  • TR Knowledge Graph
  • TREP APIs
    • CAT
    • DACS Station
    • Open DACS
    • RFA
    • UPA
  • TREP Infrastructure
  • TRKD
  • TRTH
  • Thomson One Smart
  • Transactions
    • REDI API
  • Velocity Analytics
  • Wealth Management Web Services
  • Workspace SDK
    • Element Framework
    • Grid
  • World-Check Data File
  • 中文论坛
  • Explore
  • Tags
  • Questions
  • Badges