[ https://issues.apache.org/jira/browse/IGNITE-6835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16247701#comment-16247701 ]
Sergey Kalashnikov commented on IGNITE-6835: -------------------------------------------- [~isapego] Here are my comments: 1. Duplicate {{LOG_MSG()}} in linux variant of {{SocketClient::Connect()}} 2. {{SocketClient::TrySetOptions()}} It would be great to have additional {{LOG_MSG}} output with {{errno}}/{{WSAGetLastError()}} in case of {{setsockopt}} failures. 3. Windows {{SocketClient::TrySetOption()}} {{struct tcp_keepalive settings;}} I would initialize it with zero (struct tcp_keepalive settings = {0};) before filling individual fields. > ODBC driver should handle ungraceful tcp disconnects > ---------------------------------------------------- > > Key: IGNITE-6835 > URL: https://issues.apache.org/jira/browse/IGNITE-6835 > Project: Ignite > Issue Type: Bug > Security Level: Public(Viewable by anyone) > Components: odbc > Affects Versions: 2.1 > Reporter: Alexey Popov > Assignee: Igor Sapego > Labels: odbc > Fix For: 2.4 > > > It is found that ungraceful TCP disconnect makes ODBC driver stuck at socket > recv(). > Ungraceful TCP disconnect could be caused: > 1. Network failure (or new firewall rules) > 2. Remote party shutdown (Half Closed Connection) > So, the proposal is: > setup socket options: > 1) SO_KEEPALIVE enabled > 2) TCP_KEEPIDLE to 60 sec. It is 2 hour by default > 3) TCP_KEEPINTVL to 5 (\?) sec. It is 1 sec at Win and 75 sec at Linux by > default. > 4) send/receive buffers to some greater value (8k by default) -- This message was sent by Atlassian JIRA (v6.4.14#64029)