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?
New posts are disabled while we improve the user experience.
You can browse the site, or for urgent issues, raise a query at MyAccount.
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?
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.
Perhaps the consumer doesn't actually logout ?
I think the consumer properly logs out:
And it receives the Stream Closed Events for all subscriptions.