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();
