GG-12227 Store atomic sequences in snapshot

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/22d15b5c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/22d15b5c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/22d15b5c

Branch: refs/heads/ignite-5398
Commit: 22d15b5cb7a768bd6bb6b2916dee67baa69451d6
Parents: 918cd3e
Author: EdShangGG <[email protected]>
Authored: Tue May 30 20:52:38 2017 +0300
Committer: EdShangGG <[email protected]>
Committed: Tue May 30 20:52:38 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/CacheAffinitySharedManager.java  | 14 ++++++++++++--
 .../datastructures/DataStructuresProcessor.java       |  9 +++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/22d15b5c/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 814d7e6..9c57ded 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
@@ -35,6 +35,7 @@ import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.events.DiscoveryEvent;
 import org.apache.ignite.events.Event;
+import org.apache.ignite.internal.GridKernalContext;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
@@ -350,6 +351,8 @@ public class CacheAffinitySharedManager<K, V> extends 
GridCacheSharedManagerAdap
 
         exchLog.info("onCacheChangeRequest start [topVer=" + 
fut.topologyVersion() + ", crd=" + crd + ']');
 
+        GridKernalContext ctx = cctx.kernalContext();
+
         for (DynamicCacheChangeRequest req : reqs) {
             Integer cacheId = CU.cacheId(req.cacheName());
 
@@ -359,7 +362,7 @@ public class CacheAffinitySharedManager<K, V> extends 
GridCacheSharedManagerAdap
                 assert desc != null : cacheId;
             }
             else if (req.start() && !req.clientStartOnly()) {
-                DynamicCacheDescriptor desc = new 
DynamicCacheDescriptor(cctx.kernalContext(),
+                DynamicCacheDescriptor desc = new DynamicCacheDescriptor(ctx,
                     req.startCacheConfiguration(),
                     req.cacheType(),
                     false,
@@ -385,6 +388,8 @@ public class CacheAffinitySharedManager<K, V> extends 
GridCacheSharedManagerAdap
 
         Set<Integer> stoppedCaches = null;
 
+        boolean systemCacheRestarted = false;
+
         for (DynamicCacheChangeRequest req : reqs) {
             if (!(req.clientStartOnly() || req.close()))
                 clientOnly = false;
@@ -392,6 +397,8 @@ public class CacheAffinitySharedManager<K, V> extends 
GridCacheSharedManagerAdap
             Integer cacheId = CU.cacheId(req.cacheName());
 
             if (req.start()) {
+                systemCacheRestarted |= 
GridCacheUtils.isSystemCache(req.cacheName());
+
                 exchLog.info("prepareCacheStart start [topVer=" + 
fut.topologyVersion() + ", cache=" + req.cacheName() + ']');
 
                 cctx.cache().prepareCacheStart(req, fut.topologyVersion());
@@ -495,7 +502,7 @@ public class CacheAffinitySharedManager<K, V> extends 
GridCacheSharedManagerAdap
             if (notify) {
                 final AffinityTopologyVersion topVer = affCalcVer;
 
-                cctx.kernalContext().closure().runLocalSafe(new Runnable() {
+                ctx.closure().runLocalSafe(new Runnable() {
                     @Override public void run() {
                         onCacheStopped(topVer);
                     }
@@ -503,6 +510,9 @@ public class CacheAffinitySharedManager<K, V> extends 
GridCacheSharedManagerAdap
             }
         }
 
+        if (systemCacheRestarted)
+            ctx.dataStructures().restoreStructuresState(ctx);
+
         exchLog.info("onCacheChangeRequest end [topVer=" + 
fut.topologyVersion() + ", crd=" + crd + ']');
 
         return clientOnly;

http://git-wip-us.apache.org/repos/asf/ignite/blob/22d15b5c/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
index 77fc295..0ae5b86 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
@@ -318,6 +318,15 @@ public final class DataStructuresProcessor extends 
GridProcessorAdapter implemen
 
         onKernalStart0(true);
 
+        restoreStructuresState(ctx);
+    }
+
+    /**
+     * @param ctx Context.
+     */
+    public void restoreStructuresState(GridKernalContext ctx) throws 
IgniteCheckedException {
+        onKernalStart0(true);
+
         for (Map.Entry<GridCacheInternal, GridCacheRemovable> e : 
dsMap.entrySet()) {
             GridCacheRemovable v = e.getValue();
 

Reply via email to