You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Mikhail Petrov (Jira)" <ji...@apache.org> on 2023/02/03 08:18:00 UTC

[jira] [Updated] (IGNITE-17554) {clientType}.ActiveSessions metrics are no updated in case of connection problems/lost

     [ https://issues.apache.org/jira/browse/IGNITE-17554?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mikhail Petrov updated IGNITE-17554:
------------------------------------
    Fix Version/s: 2.15

> {clientType}.ActiveSessions metrics are no updated in case of connection problems/lost
> --------------------------------------------------------------------------------------
>
>                 Key: IGNITE-17554
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17554
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.13
>            Reporter: Stepanov Ilya
>            Assignee: Mikhail Petrov
>            Priority: Minor
>              Labels: ise
>             Fix For: 2.15
>
>         Attachments: ProxyServer.java
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Metrics "\{clientType}.ActiveSessions" are not updated correctly in case of connection problems.
>  
> Steps to reproduce: 
> 1) Start server
> 2) Start jdbc or thin client
> 3) Block port 10800 on the server host
> {code:java}
> iptables -A INPUT -p tcp --dport 10800 -j DROP {code}
> 4) Check "\{clientType}.ActiveSessions". We will see one connection. 
> 5) Stop jdbc or thin client 
> 6) Check "\{clientType}.ActiveSessions". We will still see one connection in "\{clientType}.ActiveSessions".
> 7) After about 2 hours, the metric will have a negative value = -1
> Error in log:
> {code:java}
> [ERROR][grid-nio-worker-client-listener-1-#55][ClientListenerProcessor] Failed to process selector key [ses=GridSelectorNioSessionImpl [worker=DirectNioClient
> Worker [super=AbstractNioClientWorker [idx=1, bytesRcvd=19, bytesSent=28, bytesRcvd0=0, bytesSent0=0, select=true, super=GridWorker [name=grid-nio-worker-client-listener-1, igniteInst
> anceName=null, finished=false, heartbeatTs=1661784642354, hashCode=624626958, interrupted=false, runner=grid-nio-worker-client-listener-1-#55]]], writeBuf=java.nio.DirectByteBuffer[po
> s=0 lim=23040 cap=23040], readBuf=java.nio.DirectByteBuffer[pos=0 lim=184640 cap=184640], inRecovery=null, outRecovery=null, closeSocket=true, outboundMessagesQueueSizeMetric=o.a.i.i.
> processors.metric.impl.LongAdderMetric@63a61cb2, super=GridNioSessionImpl [locAddr=/10.40.6.205:10800, rmtAddr=/10.255.12.2:4708, createTime=1661776500783, closeTime=0, bytesSent=28, 
> bytesRcvd=19, bytesSent0=0, bytesRcvd0=0, sndSchedTime=1661776500844, lastSndTime=1661776500844, lastRcvTime=1661776500833, readsPaused=false, filterChain=FilterChain[filters=[GridNio
> AsyncNotifyFilter, GridNioCodecFilter [parser=ClientListenerNioMessageParser, directMode=true]], accepted=true, markedForClose=false]]]
> java.io.IOException: Connection timed out
>         at sun.nio.ch.FileDispatcherImpl.read0(Native Method) ~[?:1.8.0_302]
>         at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) ~[?:1.8.0_302]
>         at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[?:1.8.0_302]
>         at sun.nio.ch.IOUtil.read(IOUtil.java:192) ~[?:1.8.0_302]
>         at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379) ~[?:1.8.0_302]
>         at org.apache.ignite.internal.util.nio.GridNioServer$DirectNioClientWorker.processRead(GridNioServer.java:1351) ~[ignite-core-2.13.1-p0.jar:2.13.1-p0]
>         at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2508) [ignite-core-2.13.1-p0.jar:2.13.1-p0]
>         at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2273) [ignite-core-2.13.1-p0.jar:2.13.1-p0]
>         at org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1910) [ignite-core-2.13.1-p0.jar:2.13.1-p0]
>         at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125) [ignite-core-2.13.1-p0.jar:2.13.1-p0] {code}
>  
> Another case with proxy:
>  
> Steps to reproduce: 
> 1) Start server 
> 2) Start Proxy server for remote port 10800 and local port 1024
> 3) Start jdbc or thin client with proxy server connection
> {code:java}
> ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:1024");
> IgniteClient igniteClient = Ignition.startClient(cfg);
> IgniteClient igniteClient2 = Ignition.startClient(cfg); {code}
> 4) Check "\{clientType}.ActiveSessions" and "views.CLIENT_CONNECTIONS". We will see one connection. 
> 5) Stop jdbc or thin client 
> 6) Stop Proxy server 
> 7) Check "\{clientType}.ActiveSessions" and "views.CLIENT_CONNECTIONS".
> We will still see one connection in "\{clientType}.ActiveSessions" and no connection in "views.CLIENT_CONNECTIONS".



--
This message was sent by Atlassian Jira
(v8.20.10#820010)