question

Upvotes
Accepted
3 1 3 1

I am facing some issues with Reuter Elektron login and logoff scenarios.

Hi,

We are developing an adaptor application for Reuter Elektron in Integral.

At the time of login, we are creating an instance of OmmConsumer object in our application and doing subscription and unsubcription using that consumer object. At the time of logoff, we are calling the uninitialize() api on the consumer object.

The adaptor instance is up but not logged in to the Reuter Elektron. At the next login when adaptor trying to create the consumer object again using API EmaFactory.createOmmConsumer(config.consumerName(consumerName).username(userName).password(userPwd));

At this time our application is receiving the Channel_Up event for the new consumer object created but immediately after we are getting OmmException and login is not happening. Below is the Exception:


2020-01-24 06:37:50,657 INFO Thread-30 OmmConsumerImpl loggerMsg

ClientName: ChannelCallbackClient

Severity: Info

Text: Received ChannelUp event on channel Channel_4

Instance Name Consumer_3_2

Component Version ads3.2.1.L1.linux.tis.rrg 64-bit

loggerMsgEnd

2020-01-24 06:38:33,137 ERROR Thread-30 OmmConsumerImpl loggerMsg

ClientName: Consumer_3_2

Severity: Error

Text: login failed (timed out after waiting 45000 milliseconds) for :)

loggerMsgEnd

Exception Type='OmmInvalidUsageException', Text='login failed (timed out after waiting 45000 milliseconds) for :)'

at com.thomsonreuters.ema.access.OmmBaseImpl.ommIUExcept(OmmBaseImpl.java:1362)

at com.thomsonreuters.ema.access.OmmBaseImpl.handleLoginReqTimeout(OmmBaseImpl.java:1152)

at com.thomsonreuters.ema.access.OmmConsumerImpl.handleAdminDomains(OmmConsumerImpl.java:445)

at com.thomsonreuters.ema.access.OmmBaseImpl.initialize(OmmBaseImpl.java:270)

at com.thomsonreuters.ema.access.OmmConsumerImpl.<init>(OmmConsumerImpl.java:43)

at com.thomsonreuters.ema.access.EmaFactory.createOmmConsumer(EmaFactory.java:165)

at com.integral.adaptor.RTRELEKTRON.comm.ETRON.ETRONSessionManager$CreateMktDataSession.run(ETRONSessionManager.java:326)

at java.lang.Thread.run(Thread.java:745)

Now if we remove the uninitialize call at the time of logoff, then multiple login and logout will work properly and on each login a new instance of consumer is being provided and

the said exception is also not coming. But in this case we are continuously seeing the below exceptions being posted.

2020-01-24 06:34:40,678 WARN I/O dispatcher 5 OmmConsumerImpl loggerMsg

ClientName: ChannelCallbackClient

Severity: Warning

Text: Received Channel warning event on channel Channel_4

Instance Name Consumer_3_3

RsslReactor @21e8abe9

RsslChannel @5d95ecf6

Error Id 0

Internal sysError 0

Error Location null

Error text Failed to request authentication token with refresh token for user: GE-A-00336937-3-2527. Will try again with user name and password.

loggerMsgEnd

2020-01-24 06:35:20,032 WARN I/O dispatcher 7 OmmConsumerImpl loggerMsg

ClientName: ChannelCallbackClient

Severity: Warning

Text: Received Channel warning event on channel Channel_4

Instance Name Consumer_3_4

RsslReactor @7ed5f880

RsslChannel @37e4e5ce

Error Id 0

Internal sysError 0

Error Location null

Error text Failed to request authentication token with refresh token for user: GE-A-00336937-3-2527. Will try again with user name and password.

loggerMsgEnd

This exceptions are being posted for the consumer instances which are already logged out.

Please suggest us how to handle it.

elektronrefinitiv-realtimeelektron-sdkema-apirrtelektron-message-api
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.

@banerjees

Hi,

Thank you for your participation in the forum.

Is the reply below satisfactory in answering your question?

If yes please click the 'Accept' text next to the most appropriate reply. This will guide all community members who have a similar question.

Otherwise please post again offering further insight into your question.

Thanks,

AHS

Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.

Thanks,


AHS


Upvotes
Accepted
25.3k 87 12 25

Hi @banerjees


Based on your reply it does indeed appear that the API is trying to renew refresh tokens for a previous Consumer instance - and supports my suspicion that you may have come across a bug with the API - which would require more detailed investigation offline.

Therefore, I recommend you contact colleagues who have an RDC account raise a Support Ticket in order to carry out further investigation of your issue.

If the above colleagues are not in your team or unable to raise a ticket for you, then you can post a summary of the issue directly on the Elektron SDK GitHub page - however, this may take longer for a response.

When you raise an RDC ticket, please include responses to the other questions I asked above including same/different MachineID + also include XML trace to help the investigation. If you post your issue on Github you can hold back the XML trace until someone reaches out to you via Github.

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 @banerjees

Your colleagues who has RDC account are Ismet Safkan, Ashish Mudgil, Keshav Sirohi.

Upvotes
25.3k 87 12 25

Hi @banerjees

Firstly are you able to recreate this by modifying a simple example such as - example113__MarketPrice__SessionManagement?

When you logout and relogin - is this with the same user/machineID or different ID?

When you remove the uninitialize call , does the new OmmConsumer instance work (i.e. allow you to consume data)?

Do you use the same OmmConsumerConfig instance each time you call createOmmConsumer or do you create a new config instance each time also?

Also, is there a particular reason why you are logging in and logging of several times within the lifecycle of the application? Please explain your requirement - as there may be a more efficient way of implementing this.

It may also help if you capture the Low level XML Trace between the application and server to see what is happening behind the scenes - and post here as .txt after removing any credential information.

https://community.developers.refinitiv.com/questions/6439/how-to-enable-tracing-incomingoutgoing-messages-em.html

On the face of it, I suspect that you may have unearthed a bug with the API and this issue may require offline investigation via RDC but we can decide that later.


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.

Upvotes
3 1 3 1

Hi Umer,

Our application at Integral is a multiadaptor application which can host multiple adaptors at any point of time. So if want to take down Reuter Elektron adaptor at any point of time, we do a logout of that adaptor and then login again as and when required.

At the time of logout, we are destroying the instance of OMMConsumer object and OMMConsumer config instance and creating a new intsance each time when we do the login again.

If we are calling the consumer.uninitialize() at the time of logout, then at the time of next login our application is receiving the Channel_Up event for the new consumer object created but immediately after we are getting OmmException and login is not happening.

If we are not calling he consumer.uninitialize() at the time of logout, then at the time of next login, login is happening properly and everything works properly.

But in this case we are continuously seeing the below exceptions being posted.

2020-01-24 06:34:40,678 WARN I/O dispatcher 5 OmmConsumerImpl loggerMsg

ClientName: ChannelCallbackClient

Severity: Warning

Text: Received Channel warning event on channel Channel_4

Instance Name Consumer_3_3

RsslReactor @21e8abe9

RsslChannel @5d95ecf6

Error Id 0

Internal sysError 0

Error Location null

Error text Failed to request authentication token with refresh token for user: GE-A-00336937-3-2527. Will try again with user name and password.

loggerMsgEnd

In this case, it seems that Reuter is holding the consumer instance last created by our application (In this case Consumer_3_3) and trying to do the login again even if our application already logins itself with another consumer instance (Consumer_3_4).

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.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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