[ 
https://issues.apache.org/jira/browse/IGNITE-12032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16931117#comment-16931117
 ] 

Lev Agafonov commented on IGNITE-12032:
---------------------------------------

[~isapego], [~dmagda] 

Hello, Igor! Yep, I'm new to Ignite and started contribute recently.

Let me make summary, I've already investigated on this ticket:
 # The root cause of this error is closing +network+ connection from user 
application side, using thin client without notifying server about closing 
+database+ connection itself. It's similar to finishing work with your personal 
computer by immediate disconnecting plug from socket :). In this case server 
doesn't expect that network connection is closed and we got WARN message from 
Ignite on server side: "_Closing NIO session because of unhandled exception_" 
and the IOException from Java itself.
 # The right way of finishing work with database connection is: 
resultset.close(); statement.close(), connection.close(). In case of this issue 
- `connection.close()` from user application side is enough to get things good.
 # As a solution I'd like to make WARN message (in class GridNioServer) more 
user-friendly, giving a clue for the most often reason what goes wrong and how 
it can be fixed, by changing current WARN message from "_Closing NIO session 
because of unhandled exception_" to "Client connection lost, make sure 
connection.close() called before closing database connection". If everything 
clear, and you don't object - I'd like to make a PR.

Thank you!

 

> Server node prints exception when ODBC driver disconnects
> ---------------------------------------------------------
>
>                 Key: IGNITE-12032
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12032
>             Project: Ignite
>          Issue Type: Bug
>          Components: thin client
>    Affects Versions: 2.7.5
>            Reporter: Evgenii Zhuravlev
>            Assignee: Lev Agafonov
>            Priority: Minor
>              Labels: newbie, usability
>             Fix For: 2.8
>
>
> Whenever a process using ODBC clients is finished, it's printing in the 
> node logs this exception: 
> {code:java}
> *[07:45:19,559][SEVERE][grid-nio-worker-client-listener-1-#30][ClientListenerProcessor]
>  
> Failed to process selector key [s 
> es=GridSelectorNioSessionImpl [worker=ByteBufferNioClientWorker 
> [readBuf=java.nio.HeapByteBuffer[pos=0 lim=8192 cap=8192 
> ], super=AbstractNioClientWorker [idx=1, bytesRcvd=0, bytesSent=0, 
> bytesRcvd0=0, bytesSent0=0, select=true, super=GridWo 
> rker [name=grid-nio-worker-client-listener-1, igniteInstanceName=null, 
> finished=false, heartbeatTs=1564289118230, hashCo 
> de=1829856117, interrupted=false, 
> runner=grid-nio-worker-client-listener-1-#30]]], writeBuf=null, 
> readBuf=null, inRecove 
> ry=null, outRecovery=null, super=GridNioSessionImpl 
> [locAddr=/0:0:0:0:0:0:0:1:10800, rmtAddr=/0:0:0:0:0:0:0:1:63697, cre 
> ateTime=1564289116225, closeTime=0, bytesSent=1346, bytesRcvd=588, 
> bytesSent0=0, bytesRcvd0=0, sndSchedTime=156428911623 
> 5, lastSndTime=1564289116235, lastRcvTime=1564289116235, readsPaused=false, 
> filterChain=FilterChain[filters=[GridNioAsyn 
> cNotifyFilter, GridNioCodecFilter [parser=ClientListenerBufferedParser, 
> directMode=false]], accepted=true, markedForClos 
> e=false]]] 
> java.io.IOException: An existing connection was forcibly closed by the 
> remote host 
>         at sun.nio.ch.SocketDispatcher.read0(Native Method) 
>         at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) 
>         at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) 
>         at sun.nio.ch.IOUtil.read(IOUtil.java:197) 
>         at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) 
>         at 
> org.apache.ignite.internal.util.nio.GridNioServer$ByteBufferNioClientWorker.processRead(GridNioServer.java:11
>  
> 04) 
>         at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNi
>  
> oServer.java:2389) 
>         at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:215
>  
> 6) 
>         at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1797)
>  
>         at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) 
>         at java.lang.Thread.run(Thread.java:748)* 
> {code}
> It's absolutely normal behavior when ODBC client disconnects from the node, 
> so, we shouldn't print exception in the log. We should replace it with 
> something like INFO message about ODBC client disconnection.
> Thread from user list: 
> http://apache-ignite-users.70518.x6.nabble.com/exceptions-in-Ignite-node-when-a-thin-client-process-ends-td28970.html



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to