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 512.0 KiB each and 1.0 MiB total.

This question is monitored by @veerapath.rungruengrayubkul

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query? If yes please click the 'Accept' text next to the reply. This will guide all community members who have a similar question. Otherwise please post again offering further insight into your question. Thanks, AHS

Upvotes
Accepted
78.9k 250 52 74

@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 512.0 KiB each and 1.0 MiB total.

Upvotes
1.5k 5 6 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 512.0 KiB each and 1.0 MiB total.

I think the consumer properly logs out:

  • mConsumer->unregisterClient(mLoginHandle, NULL);

And it receives the Stream Closed Events for all subscriptions.

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.