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)