You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/06/16 17:04:00 UTC

[jira] [Commented] (IGNITE-5527) GridDeferredAckMessageSender can cause starvation in stripe pool on unstable topology.

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

ASF GitHub Bot commented on IGNITE-5527:
----------------------------------------

GitHub user AMashenkov opened a pull request:

    https://github.com/apache/ignite/pull/2150

    IGNITE-5527: Prevent starvation in stripe pool on unstable topology.

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/gridgain/apache-ignite ignite-5527

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ignite/pull/2150.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #2150
    
----
commit 97ea507dfef0bc389c4e13a07c338157a4f995fc
Author: Andrey V. Mashenkov <an...@gmail.com>
Date:   2017-06-16T16:54:26Z

    IGNITE-5527: Prevent starvation in stripe pool on unstable topology.

----


> GridDeferredAckMessageSender can cause starvation in stripe pool on unstable topology.
> --------------------------------------------------------------------------------------
>
>                 Key: IGNITE-5527
>                 URL: https://issues.apache.org/jira/browse/IGNITE-5527
>             Project: Ignite
>          Issue Type: Bug
>          Components: clients, general
>            Reporter: Andrew Mashenkov
>             Fix For: 2.1
>
>
> Slow or failed client can cause starvation in stripe-pool.
> GridDeferredAckMessageSender.sendDeferredAckMessage() can stucks when add message to buffer while other thread trying to send this buffer.
> Seems, we shouldn't wait for readLock in DeferredAckMessageBuffer.add() method and return false immediately.
> Stacktrace:
> Thread [name="sys-stripe-3-#4%null%", id=16, state=WAITING, blockCnt=3087, waitCnt=204846]
>  Lock [object=java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync@54ef60c9, ownerName=sys-#12106%null%, ownerId=12326]
>         at sun.misc.Unsafe.park(Native Method)
>         at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
>         at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
>         at o.a.i.i.processors.cache.GridDeferredAckMessageSender$DeferredAckMessageBuffer.add(GridDeferredAckMessageSender.java:176)
>         at o.a.i.i.processors.cache.GridDeferredAckMessageSender.sendDeferredAckMessage(GridDeferredAckMessageSender.java:100)
>         at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.sendDeferredUpdateResponse(GridDhtAtomicCache.java:3371)
>         at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3353)
>         at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$1800(GridDhtAtomicCache.java:130)
>         at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$8.apply(GridDhtAtomicCache.java:379)
>         at o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$8.apply(GridDhtAtomicCache.java:374)
>         at o.a.i.i.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:827)
>         at o.a.i.i.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:369)
>         at o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:293)
>         at o.a.i.i.processors.cache.GridCacheIoManager.access$000(GridCacheIoManager.java:95)
>         at o.a.i.i.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:238)
>         at o.a.i.i.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1217)
>         at o.a.i.i.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:845)
>         at o.a.i.i.managers.communication.GridIoManager.access$2100(GridIoManager.java:109)
>         at o.a.i.i.managers.communication.GridIoManager$6.run(GridIoManager.java:785)
>         at o.a.i.i.util.StripedExecutor$Stripe.run(StripedExecutor.java:428)
>         at java.lang.Thread.run(Thread.java:745)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)