question

Upvotes
Accepted
26 1 3 12

[EMA][C++] Login Re-Issue failed

Hi,

While doing component failovers in my application, i noticed following error (I am using realtime sdk - ema api/). What does that mean? What should i do to avoid these errors. (As it seems, login re-issue has been successful in second attempt)

Failed to reissue login request. Reason: RSSL_RET_INVALID_DATA. Error text: Login userNameType does not match existing request.

I noticed following in the documentation. We haven't handled following errors in our application explicitly. Has it anything to do with it ?

HTTP Error Handling for Reactor Token Reissues

The Enterprise Message API supports handling for the following HTTP error codes from the API gateway:

300 Errors:

  1. Perform URL redirect for 301, 302, 307 and 308 error codes.
  2. Retry the request to the API gateway for all other error codes

400 Errors:

  1. For Version 1 authentication, retry with username and password for error codes 400 and 401
  2. Stop retry the request for error codes 403, 404, 410, and 451
  3. Retry the request to the API gateway for all other error codes

500 Errors: Retry the request to the API gateway for all error codes

#technologyema-apic++refinitiv-realtime-sdk
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
Accepted
80.3k 259 52 75

@thilinaillangasinghe

Did the application call the reissue method with the Login handle?

For example:

consumer->reissue(Login::LoginReq().name("user").getMessage(), loginHandle);

I got the following error when running the above code.

1692180782336.png



1692180782336.png (98.0 KiB)
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.

Thanks for the hint @Jirapongse, I'll check on that path. Apparently correct login handle has been used. I noticed, nameType field is set in login message as well as set (programmatically) it in consumer configurations.

m_loginHandle = m_consumer->registerClient(*loginReqMsg,*this, 0);
------
refinitiv::ema::access::ReqMsg* loginReqMsg = m_emaMessageHandler->getLoginReqMessage();
loginReqMsg->initialImage(false);
loginReqMsg->interestAfterRefresh(true);
loginReqMsg->pause(isInputPause);
m_consumer->reissue(*loginReqMsg, m_loginHandle);
Upvotes
80.3k 259 52 75

@thilinaillangasinghe

Thank you for reaching out to us.

The error mean that the userNameType in the login request message doesn't match the previous login request. Typicallly, the userNameType in the login request message must be the same.

Please let us know the version of the Real-Time SDK that you are using.

Moreover, you have mentioned "doing component failovers in the application". How did you do it?

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.

Thanks for the response @Jirapongse

I am using ema3.6.6.L1. I have a primary process and a mirror process. Whenever primary process is down, mirror takes over and connect with RTO.

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.