You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vyacheslav Koptilin (JIRA)" <ji...@apache.org> on 2019/03/21 11:34:00 UTC
[jira] [Updated] (IGNITE-11589) GridDhtPartitionsExchangeFuture
remained incompleted in some circumstances
[ https://issues.apache.org/jira/browse/IGNITE-11589?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vyacheslav Koptilin updated IGNITE-11589:
-----------------------------------------
Description:
{{GridDhtPartitionsExchangeFuture#onDone}} contains a piece of code that should be executed before {{GridFutureAdapter#onDone}} is called and so,
in case of an exception is thrown by that code, exchange future is not completed and, therefore, it may cause a deadlock.
the following stack trace can be used as an example of that behavior:
{noformat}
[GridDhtPartitionsExchangeFuture] Failed to reinitialize local partitions (rebalancing will be stopped): GridDhtPartitionExchangeId [...msg=Node left: TcpDiscoveryNode [ ], type=NODE_LEFT]
class org.apache.ignite.IgniteException: null
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.detectLostPartitions(GridDhtPartitionsExchangeFuture.java:3152)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onDone(GridDhtPartitionsExchangeFuture.java
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.finishExchangeOnCoordinator(GridDhtPartitionsExchangeFuture.java:3549)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onAllReceived(GridDhtPartitionsExchangeFuture.java:3301)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.distributedExchange(GridDhtPartitionsExchangeFuture.java:1516)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:849)
at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:2878)
at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2727)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at java.lang.Thread.run(Thread.java:745)
Caused by: class org.apache.ignite.internal.IgniteInterruptedCheckedException: null
at org.apache.ignite.internal.util.IgniteUtils.doInParallel(IgniteUtils.java:10846)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.detectLostPartitions(GridDhtPartitionsExchangeFuture.java:3135)
... 9 more
Caused by: java.lang.InterruptedException
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:404)
at java.util.concurrent.FutureTask.get(FutureTask.java:191)
at org.apache.ignite.internal.util.IgniteUtils$Batch.result(IgniteUtils.java:10947)
at org.apache.ignite.internal.util.IgniteUtils.doInParallel(IgniteUtils.java:10836)
... 10 more{noformat}
was:
{{GridDhtPartitionsExchangeFuture#onDone}} contains a piece of code that should be executed before {{GridFutureAdapter#onDone}} is called and so,
in case of an exception is thrown by that code, exchange future is not completed and, therefore, it may cause a deadlock.
the following stack trace can be used as an example of that behavior:
{noformat}
[GridDhtPartitionsExchangeFuture] Failed to reinitialize local partitions (rebalancing will be stopped): GridDhtPartitionExchangeId [...msg=Node left: TcpDiscoveryNode [ ], type=NODE_LEFT]
class org.apache.ignite.IgniteException: null
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.detectLostPartitions(GridDhtPartitionsExchangeFuture.java:3152)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onDone(GridDhtPartitionsExchangeFuture.java
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.finishExchangeOnCoordinator(GridDhtPartitionsExchangeFuture.java:3549)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onAllReceived(GridDhtPartitionsExchangeFuture.java:3301)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.distributedExchange(GridDhtPartitionsExchangeFuture.java:1516)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:849)
at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:2878)
at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2727)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at java.lang.Thread.run(Thread.java:745)
Caused by: class org.apache.ignite.internal.IgniteInterruptedCheckedException: null
at org.apache.ignite.internal.util.IgniteUtils.doInParallel(IgniteUtils.java:10846)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.detectLostPartitions(GridDhtPartitionsExchangeFuture.java:3135)
... 9 more
Caused by: java.lang.InterruptedException
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:404)
at java.util.concurrent.FutureTask.get(FutureTask.java:191)
at org.apache.ignite.internal.util.IgniteUtils$Batch.result(IgniteUtils.java:10947)
at org.apache.ignite.internal.util.IgniteUtils.doInParallel(IgniteUtils.java:10836)
... 10 more{noformat}
> GridDhtPartitionsExchangeFuture remained incompleted in some circumstances
> --------------------------------------------------------------------------
>
> Key: IGNITE-11589
> URL: https://issues.apache.org/jira/browse/IGNITE-11589
> Project: Ignite
> Issue Type: Bug
> Affects Versions: 2.7
> Reporter: Vyacheslav Koptilin
> Assignee: Vyacheslav Koptilin
> Priority: Major
> Fix For: 2.8
>
>
> {{GridDhtPartitionsExchangeFuture#onDone}} contains a piece of code that should be executed before {{GridFutureAdapter#onDone}} is called and so,
> in case of an exception is thrown by that code, exchange future is not completed and, therefore, it may cause a deadlock.
> the following stack trace can be used as an example of that behavior:
> {noformat}
> [GridDhtPartitionsExchangeFuture] Failed to reinitialize local partitions (rebalancing will be stopped): GridDhtPartitionExchangeId [...msg=Node left: TcpDiscoveryNode [ ], type=NODE_LEFT]
> class org.apache.ignite.IgniteException: null
> at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.detectLostPartitions(GridDhtPartitionsExchangeFuture.java:3152)
> at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onDone(GridDhtPartitionsExchangeFuture.java
> at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.finishExchangeOnCoordinator(GridDhtPartitionsExchangeFuture.java:3549)
> at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onAllReceived(GridDhtPartitionsExchangeFuture.java:3301)
> at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.distributedExchange(GridDhtPartitionsExchangeFuture.java:1516)
> at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:849)
> at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:2878)
> at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2727)
> at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: class org.apache.ignite.internal.IgniteInterruptedCheckedException: null
> at org.apache.ignite.internal.util.IgniteUtils.doInParallel(IgniteUtils.java:10846)
> at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.detectLostPartitions(GridDhtPartitionsExchangeFuture.java:3135)
> ... 9 more
> Caused by: java.lang.InterruptedException
> at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:404)
> at java.util.concurrent.FutureTask.get(FutureTask.java:191)
> at org.apache.ignite.internal.util.IgniteUtils$Batch.result(IgniteUtils.java:10947)
> at org.apache.ignite.internal.util.IgniteUtils.doInParallel(IgniteUtils.java:10836)
> ... 10 more{noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)