question

Upvotes
Accepted
1 1 0 1

EMA Java - idle consumer disconnecting

As a temporary workaround for issue mentioned here https://community.developers.refinitiv.com/questions/28182/ema-ommconsumer-memory-leak-in-java-api.html we implemented a pool of consumers. It works, but now we faced another issue:

When the consumer sits idle in the pool it eventually disconnects from Reuters and when we eventually want to use it and query some data, we receive errors for few first attempts:

"Open / Suspect / None / 'Service not up'"

then for few next calls:

"Open / Suspect / None / 'Service not available'"

and then at some moment we start receiving actual data for all following calls, until we stop requesting data and consumer goes to idle state again for some time, in which case the whole scenario repeats.

We increased ConnectionPingTimeout parameter to 5 minuts, but then we have just a new limitation of 5 minutes for idling the consumer.

Since this parameter name is referring to "ping" I was expecting there is a "ping" going on behind the scene, but it turns out it's not (or is it?), so we implemented our own "kind of" ping mechanism, where we request snapshot data for one symbol every interval.

It's working, but it's far from ideal.

Is there a more appropriate way to keep the idle consumer "alive"?

elektronrefinitiv-realtimeelektron-sdkrrtema-apielektron-message-apiconsumertime-outping
icon clock
10 |1500

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

Hello @pawel.salawa

Since this problem requires deep investigation from Elekron API specialist team(my team), please refer to my answer in the your previous question, EMA OmmConsumer memory leak in Java API? how to allow my team to support your query.

1 Answer

Upvotes
Accepted
15.1k 28 8 12

Based on the client given information, the application has multiple users. The application creates a new consumer every time when user requested data and then dispose the consumer. This is possible the root cause of this issue.

The client reported that somehow memory allocated for consumer was not freed and the application were quickly running out of memory. The API 3rd level support team has investigated the issue and found the following information:

Normally, a memory usage can grow over time until JVM performs a garbage collection. So, the customers need to monitor the application in long run to check the graph if the usage level drops and makes it looks like a zig-zag pattern or not. If there is a memory leak potential, the zig-zag pattern will also slope up as well.

icon clock
10 |1500

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