You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Taras Ledkov (Jira)" <ji...@apache.org> on 2022/08/30 11:46:00 UTC

[jira] [Updated] (IGNITE-17159) Server node failed due to java.lang.AssertionError: Client already created

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

Taras Ledkov updated IGNITE-17159:
----------------------------------
    Release Note: Fixed race condition in GridNioServer.

> Server node failed due to java.lang.AssertionError: Client already created
> --------------------------------------------------------------------------
>
>                 Key: IGNITE-17159
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17159
>             Project: Ignite
>          Issue Type: Bug
>          Components: networking
>    Affects Versions: 2.13
>            Reporter: Semyon Danilov
>            Assignee: Semyon Danilov
>            Priority: Major
>             Fix For: 2.14
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> It seems like we release recovery descriptor prior to removing communication client from the connection pool. So another thread successfully reserves descriptor, creates a client and tries to put a newly created client into the pool and fails because there is a stale client which we didn’t remove yet. I think we should release descriptor AFTER we remove communication client and it should fix the issue.
> {noformat}
> at org.apache.ignite.spi.communication.tcp.internal.ConnectionClientPool.addNodeClient(ConnectionClientPool.java:638)
>     at org.apache.ignite.spi.communication.tcp.internal.ConnectionClientPool.reserveClient(ConnectionClientPool.java:242)
>     at org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.sendMessage0(TcpCommunicationSpi.java:1174)
>     at org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.sendMessage(TcpCommunicationSpi.java:1123)
>     at org.apache.ignite.internal.managers.communication.GridIoManager.send(GridIoManager.java:1817)
>     at org.apache.ignite.internal.managers.communication.GridIoManager.sendToGridTopic(GridIoManager.java:1944)
>     at org.apache.ignite.internal.processors.cache.GridCacheIoManager.send(GridCacheIoManager.java:1265)
>     at org.apache.ignite.internal.processors.cache.GridCacheIoManager.send(GridCacheIoManager.java:1304)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicAbstractUpdateFuture.sendDhtRequests(GridDhtAtomicAbstractUpdateFuture.java:489)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicAbstractUpdateFuture.map(GridDhtAtomicAbstractUpdateFuture.java:445)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1921)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1685)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.sendSingleRequest(GridNearAtomicAbstractUpdateFuture.java:319)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:496)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:454)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:267)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update0(GridDhtAtomicCache.java:1164)
>     at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.put0(GridDhtAtomicCache.java:627)
>     at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2073)
>     at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2048)
>     at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1311)
>     at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:817)
>     at com.autozone.supplychain.csr.receiver.QuantityCacheTupleReceiver.processRecord(QuantityCacheTupleReceiver.java:123)
>     at com.autozone.supplychain.csr.receiver.QuantityCacheTupleReceiver.receive(QuantityCacheTupleReceiver.java:47)
>     at org.apache.ignite.internal.processors.datastreamer.DataStreamerUpdateJob.call(DataStreamerUpdateJob.java:137)
>     at org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor.localUpdate(DataStreamProcessor.java:401)
>     at org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor.processRequest(DataStreamProcessor.java:306)
>     at org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor.access$000(DataStreamProcessor.java:59)
>     at org.apache.ignite.internal.processors.datastreamer.DataStreamProcessor$1.onMessage(DataStreamProcessor.java:89)
>     at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1727)
>     at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1334)
>     at org.apache.ignite.internal.managers.communication.GridIoManager.access$4800(GridIoManager.java:158)
>     at org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1218)
>     at org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:54)
>     at org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:567)
>     at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119)
>     at java.lang.Thread.run(Thread.java:750)
> {noformat}



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