Closed ligasgr closed 6 months ago
Hi, a few questions:
Is this a multithreaded application? How many items is the application requesting? Which EMA dispatch mode are you using?
Thanks, Mitchell
One other thing, in the reissue example, the code is clearing the request message immediately prior to the calling OmmConsumer.reissue(). What is the intent behind this? The clear would imply that the view does not apply anymore, is that what the application wishes to do?
Mitchell
Hi @MitchellKato Thanks a lot for quick response! To answer your questions...
Is this a multithreaded application?
Yes, we run 8 concurrent OmmConsumer threads.
How many items is the application requesting?
We request one item at a time (not using any batching) but altogether these applications (two separate ones) request between 7.6k-11k items.
Which EMA dispatch mode are you using?
OperationModel.API_DISPATCH
One other thing, in the reissue example, the code is clearing the request message immediately prior to the calling OmmConsumer.reissue(). What is the intent behind this? The clear would imply that the view does not apply anymore, is that what the application wishes to do?
As mentioned in the original example code we are reusing same ReqMsg across all of the calls that we make (registration/reissue) to prevent memory pollution. I think I forgot to mention that the ReqMsg used by reissue call is a separate one from the one that we used when registerClient()
. For the case of reissue we don't mind if we lose the view that we had (for the situation in which we use it).
For the case of unregister we are unregistering anyway so we definitely don't care about the view and it definitely should be removed as part of unregistration (but currently it fails).
Thank you, we are looking into the issue.
Thanks @MitchellKato, please keep me posted!
Hi @MitchellKato has there been any progress in trying to debug the issue?
Hi @ligasgr, we are still attempting to reproduce the problem you've identified. If you do have any additional code you can share that can recreate the issue more reliably, feel free to pass it along. Either way we want to make sure that we can reproduce it to find an appropriate solution.
Hi @ligasgr, we have found a way to accurately reproduce the issue and are looking into appropriate solutions to the problem.
That's great news, thanks a lot! Please let me know when you have something that we could test.
RTSDK 2.2.0.L1 addresses this issue. Please let us know if you have further concerns. Closing.
We've recently started using ViewPayload in RT-SDK EMA (version 3.7.0.0 and 3.6.1.2 on Linux) to limit the number of fields that we receive in two of our applications. This works ok for receiving the data but unfortunately for reissue and during unregistration we are seeing issues in the API the end up with exceptions. It looks like there may be a race condition or a bug in the logic of the library (unless we are using it wrong, but we followed the examples from: https://github.com/Refinitiv/Real-Time-SDK/blob/master/Java/Ema/Examples/src/main/java/com/refinitiv/ema/examples/training/consumer/series300/ex360_MP_View/Consumer.java)
Please note that we are NOT using batch request.
Sample code that is equivalent of what we do during registration is:
On the reissue side what we do is:
And unregister:
The issues do not occur every time and there is no specific pattern of them happening but when they happen they produce results like the ones below:
Reissue (using version 3.7.0.0):
Unregister (using older version 3.6.1.2):
Please let me know if you need any further details you may need for the investigation.
Thanks, Grzegorz