rsslInitDefaultRDMLoginRequest fails with solarflaire onload

If I run under onload the rsslInitDefaultRDMLoginRequest(&loginRequest, 1)) fails

Error return is -1, RSSL_RET_FAILURE

The login init fails but login succeeds. So nothing critical at this point.

Can someone point me in right direction how to debug this.

Best Answer

  • Hello @nrai,

    I'd like to note, that ETA libraries are not tested on SolarFlaire as part of the release process, and therefore, are not certified for it.

    I would also like to note, that the complete source code and build process for Elektron SDK->ETA is available, via Elektron SDK donwload on github.

    Are you building your ESDK from code?

    Personally, if I was serious about running ESDK on SolarFlair in a production setting, I would pull code, and make modifications into rsslRMDLoginMsg.h ->rsslInitDefaultRDMLoginRequest method, to output some additional info as to the nature of the failure.

    Then, depending on what have caused the failure, I would decide if I would be ok with the failure, or it would not be acceptable to me.

    I am assuming, that running from within debugger, and break-pointing is not assessable in this setup, otherwise, that would also be a good way to find out what is causing failure.

    I hope this helps, in an event of a unobvious failure, two old-fashioned, tried and true approaches remain, debugger+breakpoint or output-till-you-pinpoint :)

Answers

  •    /* After this consumer successfully connects into a server (TREP), we must log in.
        * Initialize a default login request (Use 1 as the Login Stream ID). */
        if ((ret = rsslInitDefaultRDMLoginRequest(&loginRequest, 1)) != RSSL_RET_SUCCESS)
        {
            LOG_ERROR("rsslInitDefaultRDMLoginRequest() failed. ret=" << ret << " " << rsslRetCodeToString(ret));
            //cleanUpAndExit(-1);
        }

    The above code is taken from sample. It has been working well for few months.

    Recently we tried to use it with solarflaire onload. So we start our exe using onload.

    old way : rmds <args>

    new way: onload rmds <args>

    The new way throws an error at the rsslInitDefaultRDMLoginRequest

    Our trep admin doesn''t see any problem, so I am guessing, init failure is innocent.

    The sample code exits on such error. We commented out the exit and can work around it.

    I am just curious why it returns -1 and if we can do something to avoid it.



  • thanks. We will try to build that and start a new thread if need any help.

  • I greped for the function rsslInitDefaultRDMLoginRequest in src code

    Elektron-SDK/Cpp-C/Eta/Include/RDM/rtr/rsslRDMLoginMsg.h

    It returns RSSL_RET_FAILURE only in one condition.

     If rsslGetUserName(&pRequest->userName) != RSSL_RET_SUCCESS


    Elektron-SDK/Cpp-C/Eta/Impl/Transport/rsslImpl.c

    this returns error if

        if(getpwuid_r(getuid(), &pwd, pwd_buffer, sizeof(pwd_buffer), &passwd) != 0)
            return RSSL_RET_FAILURE;
        pTempUserName = passwd->pw_name;
        if (pTempUserName == NULL)
            return RSSL_RET_FAILURE;

    so I guess I don't have to build this. I can investigate why those functions return error with solarflaire . And those are linux functions, so I should be able to write a standalone code to test it.

    I'll report here what I find


  • there two functions work in a sample program with or without onload.
    so I think I am back to building the ETA from source.