question

Upvotes
Accepted
43 3 5 8

[EMA C++] State: Closed / Suspect / Not entitled / 'A21: A required argument was NULL

We are trying to connect via EMA C++ API to an our assigned Service Name using port 14002
But we receive this error during login process on Linux:

onInvalidUsage Error[Closed / Suspect / Not entitled / 'A21: A required argument was

With the same code on a Windows machine all work fine, login process and subscriptions to RICs.

The Emalog on Linux is shown below:

loggerMsg
    TimeStamp: 18:13:02.464
    ClientName: EmaConfig
    Severity: Error
    Text:    error reading configuration file [EmaConfig.xml]; file is empty
loggerMsgEnd

loggerMsg
    TimeStamp: 18:13:02.464
    ClientName: EmaConfig
    Severity: Error
    Text:    failed to extract configuration from path []
loggerMsgEnd

loggerMsg
    TimeStamp: 18:13:02.843
    ClientName: ChannelCallbackClient
    Severity: Success
    Text:    Received ChannelUp event on channel Channel
    Instance Name Consumer_1_1
    Connected component version: ads2.6.9.L1.linux.tis.rrg 64-bit
loggerMsgEnd

loggerMsg
    TimeStamp: 18:13:02.877
    ClientName: LoginCallbackClient
    Severity: Error
    Text:    RDMLogin stream was closed with status message
    State: Closed / Suspect / Not entitled / 'A21: A required argument was NULL
'
loggerMsgEnd


The Emalog on Windows where all work fine is shown below:

loggerMsg
    TimeStamp: 18:23:34.114
    ClientName: EmaConfig
    Severity: Error
    Text:    error reading configuration file [EmaConfig.xml]; file is empty
loggerMsgEnd

loggerMsg
    TimeStamp: 18:23:34.114
    ClientName: EmaConfig
    Severity: Error
    Text:    failed to extract configuration from path []
loggerMsgEnd

loggerMsg
    TimeStamp: 18:23:34.300
    ClientName: ChannelCallbackClient
    Severity: Success
    Text:    Received ChannelUp event on channel Channel
    Instance Name Consumer_1_1
    Connected component version: ads2.6.9.L1.linux.tis.rrg 64-bit
loggerMsgEnd


What could be the problem?

elektronrefinitiv-realtimeelektron-sdkrrtema-apielektron-message-apiauthenticationlog-inerror-login
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
11.7k 57 39 60

Hi @cdefusco,

There are 3 up to parameters that could be used to permission users when logging in, i.e. username, position, applicationId, i.e.

Looking at your error, your server may be complaining about one of the 3, in particular, position and applicationId as these 2 do not have defaults. Both Windows and Linux should default the same but perhaps there may be an issue or slight behavior difference between the 2.

What I would do is reach out to your TREP administrator and ask them what specifically is NULL. The ADS logs should provide more details why it failed. I would also check what the complete login requirements are for you, ie. username, position and applicationID and try to set these explicitly within the OmmConsumerConfig() call.


ahs.png (45.4 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.

I solved the problem.

It seems that on windows the applicationID is set by default to 256 as I find it in the response to the login.

On Linux, on the other hand, there is no default and therefore the parameter must be set explicitly (for example 256).
For the position (I don't know for what mechanism) but the application simply connects putting it equal to empty string.

To recap:

ApplicationID = 256;
Position = "";

In this way I connect without problems as I already connected to windows.

Thank you.
Upvotes
11.7k 57 39 60

Hi @cdefusco,

Are you explicitly specifying login credentials? Or are you using the defaults based on your desktop login? The thing that stands out to me is that if you are not specifying your login credentials, then perhaps the defaults are different between the 2 environments.

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.

I am explicitly specifying login credentials.

In Linux using the class

thomsonreuters::ema::domain::login::Login::LoginStatus

I Receive this response

StreamState[Closed]
DataState[Suspect]
StatusCode[NotAuthorized]
StatusText[A21: A required argument was NULL]