question

Upvotes
Accepted
18 0 1 2

Why does OMM provider logs "RSSL Channel read failed on connection" when OMM consumer shuts down?

When shutting down our OMM consumer with our OMM provider, the OMM provider logs an error "

RSSL Channel read failed on connection" even if - I hope - the consume cleans up properly.

Any idea what the consumer may miss on clean up?

treprfarfa-apiOMMconsumer
icon clock
10 |1500

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

Upvotes
Accepted
38.1k 71 35 53

@Christian Springer

I can replicate the issue. I got the following log when the consumer application is shutdown properly.

    <- Received LoggerNotifyEvent:
    [Wed Nov 09 10:26:56 2016]: (ComponentName) Static: (Severity) Error: RSSL Channel read failed on connection "Connection_OMMProv".  Channel will be closed. (Internal debug info: "<..\..\..\Ripc\Impl\ripcsrvr.c:6654> Error:1002 ripcRead() failure. Connection reset by peer
", errno: RSSL_RET_FAILURE [0] - )

According to the information from MSDN regarding select() function:

For connection-oriented sockets, readability can also indicate that a request to close the socket has been received from the peer. If the virtual circuit was closed gracefully, and all data was received, then a recv will return immediately with zero bytes read. If the virtual circuit was reset, then a recv will complete immediately with an error code such as WSAECONNRESET. The presence of OOB data will be checked if the socket option SO_OOBINLINE has been enabled (see setsockopt).

It indicates the application needs to call read/recv function in order to detect the disconnection. Then, it needs to verify the return value or the error code.

In RFA C++, if the connection is shutdown properly, it will show the above error with RSSL_RET_FAILURE [0].

On the other hand, if the connection has been reset, it will show the following log with the system error, such as 10054.

    [Wed Nov 09 11:04:02 2016]: (ComponentName) Static: (Severity) Error: RSSL Channel read failed on connection "Connection_OMMProv".  Channel will be closed. (Internal debug info: "<..\..\..\Ripc\Impl\ripcsrvr.c:6662> Error:1002 ripcRead() failure. System errno: (10054)
", errno: RSSL_RET_FAILURE [10054] - )

It looks like to be an expected behaviour.

icon clock
10 |1500

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

Upvotes
1.5k 3 5 7

Perhaps the consumer doesn't actually logout ?

icon clock
10 |1500

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

I think the consumer properly logs out:

  • mConsumer->unregisterClient(mLoginHandle, NULL);

And it receives the Stream Closed Events for all subscriptions.

Click below to post an Idea Post Idea