You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2017/07/04 10:02:16 UTC
[10/50] ignite git commit: ignite-gg-12324 fix caches start after
restore hangs if concurrent transactions run
ignite-gg-12324 fix caches start after restore hangs if concurrent transactions run
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6391b3d0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6391b3d0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6391b3d0
Branch: refs/heads/master
Commit: 6391b3d0db2b0ea36fde50301951dfef6aacb5ff
Parents: e35358c
Author: Dmitriy Govorukhin <dm...@gmail.com>
Authored: Mon Jun 26 12:41:57 2017 +0300
Committer: Dmitriy Govorukhin <dm...@gmail.com>
Committed: Mon Jun 26 12:41:57 2017 +0300
----------------------------------------------------------------------
.../cache/CacheAffinitySharedManager.java | 21 +++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/6391b3d0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
index 35f7a0e..5984ef5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
@@ -772,9 +772,28 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
for (ExchangeActions.ActionData action : exchActions.cacheStopRequests())
cctx.cache().blockGateway(action.request().cacheName(), true, action.request().restart());
- for (CacheGroupDescriptor grpDesc : exchActions.cacheGroupsToStop())
+ for (CacheGroupDescriptor grpDesc : exchActions.cacheGroupsToStop()) {
cctx.exchange().clearClientTopology(grpDesc.groupId());
+ CacheGroupContext gctx = cctx.cache().cacheGroup(grpDesc.groupId());
+
+ if (gctx != null) {
+ IgniteCheckedException ex;
+
+ String msg = "Failed to wait for topology update, cache group is stopping.";
+
+ // If snapshot operation in progress we must throw CacheStoppedException
+ // for correct cache proxy restart. For more details see
+ // IgniteCacheProxy.cacheException()
+ if (cctx.cache().context().snapshot().snapshotOperationInProgress())
+ ex = new CacheStoppedException(msg);
+ else
+ ex = new IgniteCheckedException(msg);
+
+ gctx.affinity().cancelFutures(ex);
+ }
+ }
+
Set<Integer> stoppedGrps = null;
if (crd && lateAffAssign) {