Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 58B10200CB3 for ; Sun, 11 Jun 2017 20:54:26 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 55D17160BD7; Sun, 11 Jun 2017 18:54:26 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 34BCC160BD8 for ; Sun, 11 Jun 2017 20:54:24 +0200 (CEST) Received: (qmail 84214 invoked by uid 500); 11 Jun 2017 18:54:23 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 84195 invoked by uid 99); 11 Jun 2017 18:54:23 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 11 Jun 2017 18:54:23 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 028FFDF97C; Sun, 11 Jun 2017 18:54:20 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: agoncharuk@apache.org To: commits@ignite.apache.org Date: Sun, 11 Jun 2017 18:54:23 -0000 Message-Id: In-Reply-To: <100b4fa3212543f6b5c877419a76a827@git.apache.org> References: <100b4fa3212543f6b5c877419a76a827@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [4/4] ignite git commit: IGNITE-5392 - Joining node must accept cluster active status archived-at: Sun, 11 Jun 2017 18:54:26 -0000 IGNITE-5392 - Joining node must accept cluster active status Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bdbba0ee Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bdbba0ee Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bdbba0ee Branch: refs/heads/ignite-5267-merge-ea Commit: bdbba0ee9a5437a3f66d05c8175bfcb2f309b3bd Parents: f9ed612 Author: Dmitriy Govorukhin Authored: Sun Jun 11 21:53:56 2017 +0300 Committer: Alexey Goncharuk Committed: Sun Jun 11 21:53:56 2017 +0300 ---------------------------------------------------------------------- .../apache/ignite/internal/GridComponent.java | 4 +- .../ignite/internal/GridPluginComponent.java | 4 +- .../apache/ignite/internal/IgniteKernal.java | 13 +- .../internal/managers/GridManagerAdapter.java | 2 +- .../checkpoint/GridCheckpointManager.java | 2 +- .../collision/GridCollisionManager.java | 2 +- .../managers/communication/GridIoManager.java | 2 +- .../deployment/GridDeploymentManager.java | 2 +- .../discovery/GridDiscoveryManager.java | 43 +- .../eventstorage/GridEventStorageManager.java | 2 +- .../managers/failover/GridFailoverManager.java | 2 +- .../managers/indexing/GridIndexingManager.java | 2 +- .../loadbalancer/GridLoadBalancerManager.java | 2 +- .../pagemem/store/IgnitePageStoreManager.java | 2 +- .../processors/GridProcessorAdapter.java | 4 +- .../affinity/GridAffinityProcessor.java | 2 +- .../cache/CacheAffinitySharedManager.java | 38 +- .../CacheClientReconnectDiscoveryData.java | 2 +- .../internal/processors/cache/CacheData.java | 7 + .../cache/CacheJoinNodeDiscoveryData.java | 20 +- .../cache/CacheNodeCommonDiscoveryData.java | 10 +- .../processors/cache/ClusterCachesInfo.java | 56 +- .../cache/DynamicCacheChangeRequest.java | 7 +- .../processors/cache/GridCacheProcessor.java | 259 ++----- .../binary/CacheObjectBinaryProcessorImpl.java | 6 +- .../IgniteCacheDatabaseSharedManager.java | 16 +- .../closure/GridClosureProcessor.java | 2 +- .../processors/cluster/ClusterProcessor.java | 2 +- .../cluster/GridClusterStateProcessor.java | 362 +++++++-- .../continuous/GridContinuousProcessor.java | 2 +- .../datastreamer/DataStreamProcessor.java | 2 +- .../datastructures/DataStructuresProcessor.java | 20 +- .../internal/processors/igfs/IgfsProcessor.java | 4 +- .../processors/job/GridJobProcessor.java | 2 +- .../jobmetrics/GridJobMetricsProcessor.java | 2 +- .../GridMarshallerMappingProcessor.java | 2 +- .../processors/odbc/SqlListenerProcessor.java | 2 +- .../platform/PlatformProcessorImpl.java | 2 +- .../plugin/IgnitePluginProcessor.java | 2 +- .../processors/port/GridPortProcessor.java | 2 +- .../processors/query/GridQueryProcessor.java | 4 +- .../resource/GridResourceProcessor.java | 2 +- .../processors/rest/GridRestProcessor.java | 4 +- .../service/GridServiceProcessor.java | 12 +- .../session/GridTaskSessionProcessor.java | 2 +- .../processors/task/GridTaskProcessor.java | 4 +- .../timeout/GridTimeoutProcessor.java | 2 +- .../ignite/spi/discovery/tcp/ServerImpl.java | 26 - ...GridManagerLocalMessageListenerSelfTest.java | 8 +- .../managers/GridNoopManagerSelfTest.java | 2 +- ...cpCommunicationSpiMultithreadedSelfTest.java | 4 +- .../discovery/tcp/TestReconnectProcessor.java | 2 +- .../testframework/junits/GridAbstractTest.java | 18 +- .../junits/GridTestKernalContext.java | 2 +- .../processors/hadoop/HadoopProcessor.java | 6 +- .../GridCacheDatabaseSharedManager.java | 109 ++- .../database/file/FilePageStoreManager.java | 66 +- .../database/pagemem/NoOpPageStoreManager.java | 1 + .../AbstractNodeJoinTemplate.java | 743 +++++++++++++++++++ .../IgniteChangeGlobalStateAbstractTest.java | 4 +- .../IgniteStandByClusterTest.java | 213 ++++++ .../join/JoinActiveNodeToActiveCluster.java | 431 +++++++++++ .../join/JoinActiveNodeToInActiveCluster.java | 227 ++++++ .../join/JoinInActiveNodeToActiveCluster.java | 356 +++++++++ .../join/JoinInActiveNodeToInActiveCluster.java | 226 ++++++ ...ctiveNodeToActiveClusterWithPersistence.java | 97 +++ ...iveNodeToInActiveClusterWithPersistence.java | 31 + ...ctiveNodeToActiveClusterWithPersistence.java | 85 +++ ...iveNodeToInActiveClusterWithPersistence.java | 31 + ...gniteAbstractStandByClientReconnectTest.java | 336 +++++++++ .../IgniteStandByClientReconnectTest.java | 283 +++++++ ...eStandByClientReconnectToNewClusterTest.java | 289 ++++++++ .../schedule/IgniteScheduleProcessor.java | 2 +- 73 files changed, 4031 insertions(+), 516 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java b/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java index 98edf0f..0505929 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java @@ -69,7 +69,7 @@ public interface GridComponent { * * @throws IgniteCheckedException Throws in case of any errors. */ - public void start(boolean activeOnStart) throws IgniteCheckedException; + public void start() throws IgniteCheckedException; /** * Stops grid component. @@ -86,7 +86,7 @@ public interface GridComponent { * * @throws IgniteCheckedException Thrown in case of any errors. */ - public void onKernalStart(boolean activeOnStart) throws IgniteCheckedException; + public void onKernalStart() throws IgniteCheckedException; /** * Callback to notify that kernal is about to stop. http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java b/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java index 1e613b7..cc1ae71 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java @@ -51,7 +51,7 @@ public class GridPluginComponent implements GridComponent { /** {@inheritDoc} */ @SuppressWarnings("unchecked") - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { throw new UnsupportedOperationException(); } @@ -61,7 +61,7 @@ public class GridPluginComponent implements GridComponent { } /** {@inheritDoc} */ - @Override public void onKernalStart(boolean activeOnStart) throws IgniteCheckedException { + @Override public void onKernalStart() throws IgniteCheckedException { plugin.onIgniteStart(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java index f092e2b..fa605d6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java @@ -926,7 +926,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { startProcessor(new GridAffinityProcessor(ctx)); startProcessor(createComponent(GridSegmentationProcessor.class, ctx)); startProcessor(createComponent(IgniteCacheObjectProcessor.class, ctx)); - startProcessor(new GridCacheProcessor(ctx));startProcessor(new GridClusterStateProcessor(ctx)); + startProcessor(new GridClusterStateProcessor(ctx)); + startProcessor(new GridCacheProcessor(ctx)); startProcessor(new GridQueryProcessor(ctx)); startProcessor(new SqlListenerProcessor(ctx)); startProcessor(new GridServiceProcessor(ctx)); @@ -991,10 +992,10 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { ctx.performance().addAll(OsConfigurationSuggestions.getSuggestions()); // Notify discovery manager the first to make sure that topology is discovered. - ctx.discovery().onKernalStart(activeOnStart); + ctx.discovery().onKernalStart(); // Notify IO manager the second so further components can send and receive messages. - ctx.io().onKernalStart(activeOnStart); + ctx.io().onKernalStart(); // Start plugins. for (PluginProvider provider : ctx.plugins().allProviders()) @@ -1017,7 +1018,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { if (!skipDaemon(comp)) { try { - comp.onKernalStart(activeOnStart); + comp.onKernalStart(); } catch (IgniteNeedReconnectException e) { assert ctx.discovery().reconnectSupported(); @@ -1749,7 +1750,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { try { if (!skipDaemon(mgr)) - mgr.start(cfg.isActiveOnStart()); + mgr.start(); } catch (IgniteCheckedException e) { U.error(log, "Failed to start manager: " + mgr, e); @@ -1767,7 +1768,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { try { if (!skipDaemon(proc)) - proc.start(cfg.isActiveOnStart()); + proc.start(); } catch (IgniteCheckedException e) { throw new IgniteCheckedException("Failed to start processor: " + proc, e); http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java index 7d9ee74..7dfeffb 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java @@ -362,7 +362,7 @@ public abstract class GridManagerAdapter implements GridMan } /** {@inheritDoc} */ - @Override public final void onKernalStart(boolean activeOnStart) throws IgniteCheckedException { + @Override public final void onKernalStart() throws IgniteCheckedException { for (final IgniteSpi spi : spis) { try { spi.onContextInitialized(new IgniteSpiContext() { http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java index 782ee5e..3c08e9e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/checkpoint/GridCheckpointManager.java @@ -102,7 +102,7 @@ public class GridCheckpointManager extends GridManagerAdapter { } /** {@inheritDoc} */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { for (CheckpointSpi spi : getSpis()) { spi.setCheckpointListener(new CheckpointListener() { @Override public void onCheckpointRemoved(String key) { http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/collision/GridCollisionManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/collision/GridCollisionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/collision/GridCollisionManager.java index 14f69de..40901b6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/collision/GridCollisionManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/collision/GridCollisionManager.java @@ -47,7 +47,7 @@ public class GridCollisionManager extends GridManagerAdapter { } /** {@inheritDoc} */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { startSpi(); if (enabled()) { http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java index 3769a9c..85ae024 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java @@ -261,7 +261,7 @@ public class GridIoManager extends GridManagerAdapter 0, "discoveryStartupDelay > 0"); startSpi(); http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentManager.java index 17d30eb..cea1786 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentManager.java @@ -91,7 +91,7 @@ public class GridDeploymentManager extends GridManagerAdapter { } /** {@inheritDoc} */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { GridProtocolHandler.registerDeploymentManager(this); assertParameter(ctx.config().getDeploymentMode() != null, "ctx.config().getDeploymentMode() != null"); http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java index a442d04..5bb0265 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java @@ -73,6 +73,7 @@ import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor; import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor; import org.apache.ignite.internal.processors.cache.GridCacheAdapter; +import org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor; import org.apache.ignite.internal.processors.jobmetrics.GridJobMetrics; import org.apache.ignite.internal.processors.security.SecurityContext; import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor; @@ -463,7 +464,7 @@ public class GridDiscoveryManager extends GridManagerAdapter { } /** {@inheritDoc} */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { long totSysMemory = -1; try { @@ -741,19 +742,36 @@ public class GridDiscoveryManager extends GridManagerAdapter { } @Override public void onExchange(DiscoveryDataBag dataBag) { + assert dataBag != null; + assert dataBag.joiningNodeId() != null; + if (ctx.localNodeId().equals(dataBag.joiningNodeId())) { - //NodeAdded msg reached joining node after round-trip over the ring + // NodeAdded msg reached joining node after round-trip over the ring. + GridClusterStateProcessor stateProc = ctx.state(); + + stateProc.onGridDataReceived(dataBag.gridDiscoveryData( + stateProc.discoveryDataType().ordinal())); + for (GridComponent c : ctx.components()) { - if (c.discoveryDataType() != null) + if (c.discoveryDataType() != null && c != stateProc) c.onGridDataReceived(dataBag.gridDiscoveryData(c.discoveryDataType().ordinal())); } } else { - //discovery data from newly joined node has to be applied to the current old node + // Discovery data from newly joined node has to be applied to the current old node. + GridClusterStateProcessor stateProc = ctx.state(); + + JoiningNodeDiscoveryData data0 = dataBag.newJoinerDiscoveryData( + stateProc.discoveryDataType().ordinal()); + + assert data0 != null; + + stateProc.onJoiningNodeDataReceived(data0); + for (GridComponent c : ctx.components()) { - if (c.discoveryDataType() != null) { - JoiningNodeDiscoveryData data = - dataBag.newJoinerDiscoveryData(c.discoveryDataType().ordinal()); + if (c.discoveryDataType() != null && c != stateProc) { + JoiningNodeDiscoveryData data = dataBag.newJoinerDiscoveryData( + c.discoveryDataType().ordinal()); if (data != null) c.onJoiningNodeDataReceived(data); @@ -1222,17 +1240,6 @@ public class GridDiscoveryManager extends GridManagerAdapter { ", rmtAddrs=" + U.addressesAsString(n) + ']'); } - boolean rmtActiveOnStart = n.attribute(ATTR_ACTIVE_ON_START); - - if (locActiveOnStart != rmtActiveOnStart) { - throw new IgniteCheckedException("Remote node has active on start flag different from local " + - "[locId8=" + U.id8(locNode.id()) + - ", locActiveOnStart=" + locActiveOnStart + - ", rmtId8=" + U.id8(n.id()) + - ", rmtActiveOnStart=" + rmtActiveOnStart + - ", rmtAddrs=" + U.addressesAsString(n) + ']'); - } - Boolean rmtSrvcCompatibilityEnabled = n.attribute(ATTR_SERVICES_COMPATIBILITY_MODE); if (!F.eq(locSrvcCompatibilityEnabled, rmtSrvcCompatibilityEnabled)) { http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java index 04fb5b9..53b258a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java @@ -273,7 +273,7 @@ public class GridEventStorageManager extends GridManagerAdapter } /** {@inheritDoc} */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { Map, int[]> evtLsnrs = ctx.config().getLocalEventListeners(); if (evtLsnrs != null) { http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/failover/GridFailoverManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/failover/GridFailoverManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/failover/GridFailoverManager.java index 5393d9c..d287e63 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/failover/GridFailoverManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/failover/GridFailoverManager.java @@ -40,7 +40,7 @@ public class GridFailoverManager extends GridManagerAdapter { } /** {@inheritDoc} */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { startSpi(); if (log.isDebugEnabled()) http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/GridIndexingManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/GridIndexingManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/GridIndexingManager.java index 6d29604..f1f8f87 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/GridIndexingManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/indexing/GridIndexingManager.java @@ -48,7 +48,7 @@ public class GridIndexingManager extends GridManagerAdapter { /** * @throws IgniteCheckedException Thrown in case of any errors. */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { startSpi(); if (log.isDebugEnabled()) http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/loadbalancer/GridLoadBalancerManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/loadbalancer/GridLoadBalancerManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/loadbalancer/GridLoadBalancerManager.java index 2c218f0..15a4d2c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/loadbalancer/GridLoadBalancerManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/loadbalancer/GridLoadBalancerManager.java @@ -45,7 +45,7 @@ public class GridLoadBalancerManager extends GridManagerAdapter extends GridCacheSharedManagerAdap * @throws IgniteCheckedException If failed. * @return {@code True} if client-only exchange is needed. */ - public boolean onCacheChangeRequest(final GridDhtPartitionsExchangeFuture fut, + public boolean onCacheChangeRequest( + final GridDhtPartitionsExchangeFuture fut, boolean crd, - final ExchangeActions exchActions) - throws IgniteCheckedException - { + final ExchangeActions exchActions + ) throws IgniteCheckedException { assert exchActions != null && !exchActions.empty() : exchActions; updateCachesInfo(exchActions); @@ -377,7 +377,19 @@ public class CacheAffinitySharedManager extends GridCacheSharedManagerAdap NearCacheConfiguration nearCfg = null; - if (cctx.localNodeId().equals(req.initiatingNodeId())) { + if (exchActions.newClusterState() == ClusterState.ACTIVE) { + if (CU.isSystemCache(req.cacheName())) + startCache = true; + else if (!cctx.localNode().isClient()) { + startCache = cctx.cacheContext(action.descriptor().cacheId()) == null && + CU.affinityNode(cctx.localNode(), req.startCacheConfiguration().getNodeFilter()); + + nearCfg = req.nearCacheConfiguration(); + } + else // Only static cache configured on client must be started. + startCache = cctx.kernalContext().state().isLocalConfigure(req.cacheName()); + } + else if (cctx.localNodeId().equals(req.initiatingNodeId())) { startCache = true; nearCfg = req.nearCacheConfiguration(); @@ -388,9 +400,19 @@ public class CacheAffinitySharedManager extends GridCacheSharedManagerAdap } try { + // Save configuration before cache started. + if (cctx.pageStore() != null && !cctx.localNode().isClient()) + cctx.pageStore().storeCacheData( + cacheDesc.groupDescriptor(), + new StoredCacheData(req.startCacheConfiguration()) + ); + if (startCache) { cctx.cache().prepareCacheStart(cacheDesc, nearCfg, fut.topologyVersion()); + if (exchActions.newClusterState() == null) + cctx.kernalContext().state().onCacheStart(req); + if (fut.cacheAddedOnExchange(cacheDesc.cacheId(), cacheDesc.receivedFrom())) { if (fut.discoCache().cacheGroupAffinityNodes(cacheDesc.groupId()).isEmpty()) U.quietAndWarn(log, "No server nodes found for cache client: " + req.cacheName()); @@ -845,9 +867,11 @@ public class CacheAffinitySharedManager extends GridCacheSharedManagerAdap * @param descs Cache descriptors. * @throws IgniteCheckedException If failed. */ - public void initStartedCaches(boolean crd, + public void initStartedCaches( + boolean crd, final GridDhtPartitionsExchangeFuture fut, - Collection descs) throws IgniteCheckedException { + Collection descs + ) throws IgniteCheckedException { for (DynamicCacheDescriptor desc : descs) { CacheGroupDescriptor grpDesc = desc.groupDescriptor(); http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClientReconnectDiscoveryData.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClientReconnectDiscoveryData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClientReconnectDiscoveryData.java index 6a6f40d..c264263 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClientReconnectDiscoveryData.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClientReconnectDiscoveryData.java @@ -56,7 +56,7 @@ public class CacheClientReconnectDiscoveryData implements Serializable { /** * @return Information about caches started on re-joining client node. */ - Map clientCaches() { + public Map clientCaches() { return clientCaches; } http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java index b728d96..dee32fa 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheData.java @@ -177,6 +177,13 @@ public class CacheData implements Serializable { return rcvdFrom; } + /** + * @return Flags. + */ + public long flags() { + return flags; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(CacheData.class, this, "cacheName", cacheCfg.getName()); http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheJoinNodeDiscoveryData.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheJoinNodeDiscoveryData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheJoinNodeDiscoveryData.java index 3f99134..ecfa8bc 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheJoinNodeDiscoveryData.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheJoinNodeDiscoveryData.java @@ -26,7 +26,7 @@ import org.apache.ignite.lang.IgniteUuid; /** * Information about configured caches sent from joining node. */ -class CacheJoinNodeDiscoveryData implements Serializable { +public class CacheJoinNodeDiscoveryData implements Serializable { /** */ private static final long serialVersionUID = 0L; @@ -51,7 +51,7 @@ class CacheJoinNodeDiscoveryData implements Serializable { * @param templates Templates. * @param startCaches {@code True} if required to start all caches on joining node. */ - CacheJoinNodeDiscoveryData( + public CacheJoinNodeDiscoveryData( IgniteUuid cacheDeploymentId, Map caches, Map templates, @@ -72,28 +72,28 @@ class CacheJoinNodeDiscoveryData implements Serializable { /** * @return Deployment ID assigned on joining node. */ - IgniteUuid cacheDeploymentId() { + public IgniteUuid cacheDeploymentId() { return cacheDeploymentId; } /** * @return Templates configured on joining node. */ - Map templates() { + public Map templates() { return templates; } /** * @return Caches configured on joining node. */ - Map caches() { + public Map caches() { return caches; } /** * */ - static class CacheInfo implements Serializable { + public static class CacheInfo implements Serializable { /** */ private static final long serialVersionUID = 0L; @@ -118,7 +118,7 @@ class CacheJoinNodeDiscoveryData implements Serializable { * @param sql SQL flag - {@code true} if cache was created with {@code CREATE TABLE}. * @param flags Flags (for future usage). */ - CacheInfo(StoredCacheData cacheData, CacheType cacheType, boolean sql, long flags) { + public CacheInfo(StoredCacheData cacheData, CacheType cacheType, boolean sql, long flags) { this.cacheData = cacheData; this.cacheType = cacheType; this.sql = sql; @@ -128,21 +128,21 @@ class CacheJoinNodeDiscoveryData implements Serializable { /** * @return Cache data. */ - StoredCacheData cacheData() { + public StoredCacheData cacheData() { return cacheData; } /** * @return Cache type. */ - CacheType cacheType() { + public CacheType cacheType() { return cacheType; } /** * @return SQL flag - {@code true} if cache was created with {@code CREATE TABLE}. */ - boolean sql() { + public boolean sql() { return sql; } http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheNodeCommonDiscoveryData.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheNodeCommonDiscoveryData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheNodeCommonDiscoveryData.java index 796ed9d..abcc192 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheNodeCommonDiscoveryData.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheNodeCommonDiscoveryData.java @@ -27,7 +27,7 @@ import org.apache.ignite.internal.util.typedef.internal.S; /** * Cache information sent in discovery data to joining node. */ -class CacheNodeCommonDiscoveryData implements Serializable { +public class CacheNodeCommonDiscoveryData implements Serializable { /** */ private static final long serialVersionUID = 0L; @@ -55,7 +55,7 @@ class CacheNodeCommonDiscoveryData implements Serializable { * @param cacheGrps Started cache groups. * @param clientNodesMap Information about cache client nodes. */ - CacheNodeCommonDiscoveryData(Map caches, + public CacheNodeCommonDiscoveryData(Map caches, Map templates, Map cacheGrps, Map> clientNodesMap, @@ -83,21 +83,21 @@ class CacheNodeCommonDiscoveryData implements Serializable { /** * @return Started caches. */ - Map caches() { + public Map caches() { return caches; } /** * @return Configured templates. */ - Map templates() { + public Map templates() { return templates; } /** * @return Information about cache client nodes. */ - Map> clientNodesMap() { + public Map> clientNodesMap() { return clientNodesMap; } http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java index 4838a82..ef5dd51 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java @@ -82,10 +82,10 @@ class ClusterCachesInfo { /** */ private CachesOnDisconnect cachesOnDisconnect; - /** */ + /** Local cache info */ private CacheJoinNodeDiscoveryData joinDiscoData; - /** */ + /** Cluster cache info */ private GridData gridData; /** */ @@ -109,25 +109,6 @@ class ClusterCachesInfo { */ void onStart(CacheJoinNodeDiscoveryData joinDiscoData) throws IgniteCheckedException { this.joinDiscoData = joinDiscoData; - - Map grpCfgs = new HashMap<>(); - - for (CacheJoinNodeDiscoveryData.CacheInfo info : joinDiscoData.caches().values()) { - if (info.cacheData().config().getGroupName() == null) - continue; - - CacheConfiguration ccfg = grpCfgs.get(info.cacheData().config().getGroupName()); - - if (ccfg == null) - grpCfgs.put(info.cacheData().config().getGroupName(), info.cacheData().config()); - else - validateCacheGroupConfiguration(ccfg, info.cacheData().config()); - } - - String conflictErr = processJoiningNode(joinDiscoData, ctx.localNodeId(), true); - - if (conflictErr != null) - throw new IgniteCheckedException("Failed to start configured cache. " + conflictErr); } /** @@ -175,7 +156,6 @@ class ClusterCachesInfo { joinDiscoData = null; gridData = null; } - /** * Checks that remote caches has configuration compatible with the local. * @@ -218,7 +198,7 @@ class ClusterCachesInfo { } CU.checkAttributeMismatch(log, rmtAttr.cacheName(), rmt, "cacheAffinity", "Cache affinity", - locAttr.cacheAffinityClassName(), rmtAttr.cacheAffinityClassName(), true); + locAttr.cacheAffinityClassName(), rmtAttr.cacheAffinityClassName(), true); CU.checkAttributeMismatch(log, rmtAttr.cacheName(), rmt, "cacheAffinityMapper", "Cache affinity mapper", locAttr.cacheAffinityMapperClassName(), @@ -691,6 +671,27 @@ class ClusterCachesInfo { return started != null ? started : Collections.emptyList(); } + public void addJoinInfo() { + Map grpCfgs = new HashMap<>(); + + for (CacheJoinNodeDiscoveryData.CacheInfo info : joinDiscoData.caches().values()) { + if (info.cacheData().config().getGroupName() == null) + continue; + + CacheConfiguration ccfg = grpCfgs.get(info.cacheData().config().getGroupName()); + + if (ccfg == null) + grpCfgs.put(info.cacheData().config().getGroupName(), info.cacheData().config()); + /*else + validateCacheGroupConfiguration(ccfg, info.cacheData().config());*/ + } + + String conflictErr = processJoiningNode(joinDiscoData, ctx.localNodeId(), true); + + /* if (conflictErr != null) + throw new IgniteCheckedException("Failed to start configured cache. " + conflictErr);*/ + } + /** * Discovery event callback, executed from discovery thread. * @@ -719,6 +720,9 @@ class ClusterCachesInfo { if (gridData == null) { // First node starts. assert joinDiscoData != null || !ctx.state().active(); + if (ctx.state().active()) + addJoinInfo(); + initStartCachesForLocalJoin(true); } } @@ -983,7 +987,7 @@ class ClusterCachesInfo { clientReconnectReqs.put(data.joiningNodeId(), (CacheClientReconnectDiscoveryData)joiningNodeData); } else - processClientReconnectData((CacheClientReconnectDiscoveryData) joiningNodeData, data.joiningNodeId()); + processClientReconnectData((CacheClientReconnectDiscoveryData)joiningNodeData, data.joiningNodeId()); } else if (joiningNodeData instanceof CacheJoinNodeDiscoveryData) processJoiningNode((CacheJoinNodeDiscoveryData)joiningNodeData, data.joiningNodeId(), false); @@ -1364,7 +1368,7 @@ class ClusterCachesInfo { boolean stopped; - if (!surviveReconnect(cacheName)) { + if (!surviveReconnect(cacheName) || !ctx.state().active()) { DynamicCacheDescriptor newDesc = registeredCaches.get(cacheName); stopped = newDesc == null || !desc.deploymentId().equals(newDesc.deploymentId()); @@ -1391,7 +1395,7 @@ class ClusterCachesInfo { /** * @return {@code True} if client node is currently in disconnected state. */ - private boolean disconnectedState() { + public boolean disconnectedState() { return cachesOnDisconnect != null; } http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java index 7c0c55c..ae6f9e0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java @@ -176,7 +176,12 @@ public class DynamicCacheChangeRequest implements Serializable { * @param destroy Destroy flag. * @return Cache stop request. */ - static DynamicCacheChangeRequest stopRequest(GridKernalContext ctx, String cacheName, boolean sql, boolean destroy) { + public static DynamicCacheChangeRequest stopRequest( + GridKernalContext ctx, + String cacheName, + boolean sql, + boolean destroy + ) { DynamicCacheChangeRequest req = new DynamicCacheChangeRequest(UUID.randomUUID(), cacheName, ctx.localNodeId()); req.sql(sql); http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java index fefaf07..5ee80ef 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java @@ -74,6 +74,7 @@ import org.apache.ignite.internal.pagemem.store.IgnitePageStoreManager; import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager; import org.apache.ignite.internal.processors.GridProcessorAdapter; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; +import org.apache.ignite.internal.processors.cache.CacheJoinNodeDiscoveryData.CacheInfo; import org.apache.ignite.internal.processors.affinity.GridAffinityAssignmentCache; import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl; import org.apache.ignite.internal.processors.cache.database.IgniteCacheDatabaseSharedManager; @@ -638,7 +639,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { /** {@inheritDoc} */ @SuppressWarnings({"unchecked"}) - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { cachesInfo = new ClusterCachesInfo(ctx); DeploymentMode depMode = ctx.config().getDeploymentMode(); @@ -652,8 +653,10 @@ public class GridCacheProcessor extends GridProcessorAdapter { initializeInternalCacheNames(); - sharedCtx = createSharedContext( - ctx, CU.startStoreSessionListeners(ctx, ctx.config().getCacheStoreSessionListenerFactories())); + Collection sessionListeners = + CU.startStoreSessionListeners(ctx, ctx.config().getCacheStoreSessionListenerFactories()); + + sharedCtx = createSharedContext(ctx, sessionListeners); transactions = new IgniteTransactionsImpl(sharedCtx); @@ -661,31 +664,28 @@ public class GridCacheProcessor extends GridProcessorAdapter { for (GridCacheSharedManager mgr : sharedCtx.managers()) mgr.start(sharedCtx); - if (activeOnStart && !ctx.config().isDaemon()) { - Map caches = new HashMap<>(); + if (ctx.config().isDaemon()) + return; - Map templates = new HashMap<>(); + Map caches = new HashMap<>(); - addCacheOnJoinFromConfig(caches, templates); + Map templates = new HashMap<>(); - addCacheOnJoinFromPersistentStore(caches, templates); + addCacheOnJoinFromConfig(caches, templates); - CacheJoinNodeDiscoveryData discoData = new CacheJoinNodeDiscoveryData(IgniteUuid.randomUuid(), - caches, - templates, - startAllCachesOnClientStart()); + CacheJoinNodeDiscoveryData discoData = new CacheJoinNodeDiscoveryData( + IgniteUuid.randomUuid(), + caches, + templates, + startAllCachesOnClientStart() + ); - cachesInfo.onStart(discoData); - } - else { - cachesInfo.onStart(new CacheJoinNodeDiscoveryData(IgniteUuid.randomUuid(), - Collections.emptyMap(), - Collections.emptyMap(), - false)); - } + cachesInfo.onStart(discoData); if (log.isDebugEnabled()) log.debug("Started cache processor."); + + ctx.state().cacheProcessorStarted(discoData); } /** @@ -695,8 +695,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { * @throws IgniteCheckedException If failed. */ private void addCacheOnJoin(StoredCacheData cacheData, - Map caches, - Map templates) throws IgniteCheckedException { + Map caches, + Map templates) throws IgniteCheckedException { CacheConfiguration cfg = cacheData.config(); CU.validateCacheName(cfg.getName()); @@ -716,14 +716,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { "assign unique name to each cache): " + cfg.getName()); } - CacheType cacheType; - - if (CU.isUtilityCache(cfg.getName())) - cacheType = CacheType.UTILITY; - else if (internalCaches.contains(cfg.getName())) - cacheType = CacheType.INTERNAL; - else - cacheType = CacheType.USER; + CacheType cacheType = cacheType(cfg.getName()); if (cacheType != CacheType.USER && cfg.getMemoryPolicyName() == null) cfg.setMemoryPolicyName(sharedCtx.database().systemMemoryPolicyName()); @@ -745,8 +738,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { * @throws IgniteCheckedException If failed. */ private void addCacheOnJoinFromConfig( - Map caches, - Map templates + Map caches, + Map templates ) throws IgniteCheckedException { assert !ctx.config().isDaemon(); @@ -755,7 +748,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { for (int i = 0; i < cfgs.length; i++) { CacheConfiguration cfg = new CacheConfiguration(cfgs[i]); - cfgs[i] = cfg; // Replace original configuration value. + // Replace original configuration value. + cfgs[i] = cfg; StoredCacheData cacheData = new StoredCacheData(cfg); cacheData.sql(false); @@ -764,36 +758,6 @@ public class GridCacheProcessor extends GridProcessorAdapter { } /** - * @param caches Caches map. - * @param templates Templates map. - * @throws IgniteCheckedException If failed. - */ - private void addCacheOnJoinFromPersistentStore( - Map caches, - Map templates - ) throws IgniteCheckedException { - assert !ctx.config().isDaemon(); - - if (sharedCtx.pageStore() != null && sharedCtx.database().persistenceEnabled()) { - Map cacheDataMap = sharedCtx.pageStore().readCacheConfigurations(); - - for (String cache : caches.keySet()) - cacheDataMap.remove(cache); - - for (String cache : internalCaches) - cacheDataMap.remove(cache); - - if (!F.isEmpty(cacheDataMap)) { - if (log.isInfoEnabled()) - log.info("Register persistent caches: " + cacheDataMap.keySet()); - - for (StoredCacheData cacheData : cacheDataMap.values()) - addCacheOnJoin(cacheData, caches, templates); - } - } - } - - /** * Initialize internal cache names */ private void initializeInternalCacheNames() { @@ -829,9 +793,11 @@ public class GridCacheProcessor extends GridProcessorAdapter { /** {@inheritDoc} */ @SuppressWarnings("unchecked") - @Override public void onKernalStart(boolean activeOnStart) throws IgniteCheckedException { + @Override public void onKernalStart() throws IgniteCheckedException { ClusterNode locNode = ctx.discovery().localNode(); + boolean active = ctx.state().active(); + try { boolean checkConsistency = !ctx.config().isDaemon() && !getBoolean(IGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK); @@ -841,42 +807,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { cachesInfo.onKernalStart(checkConsistency); - boolean currStatus = ctx.state().active(); - - // If we start as inactive node, and join to active cluster, we must register all caches - // which were received on join. - if (!ctx.isDaemon() && currStatus && !activeOnStart) { - List tmpCacheCfg = new ArrayList<>(); - - for (CacheConfiguration conf : ctx.config().getCacheConfiguration()) { - assert conf.getName() != null; - - for (DynamicCacheDescriptor desc : cacheDescriptors().values()) { - CacheConfiguration c = desc.cacheConfiguration(); - IgnitePredicate filter = desc.groupDescriptor().config().getNodeFilter(); - - if (c.getName().equals(conf.getName()) && - ((desc.receivedOnDiscovery() && CU.affinityNode(locNode, filter)) || - CU.isSystemCache(c.getName()))) { - tmpCacheCfg.add(c); - - break; - } - } - } - - if (!tmpCacheCfg.isEmpty()) { - CacheConfiguration[] newCacheCfg = new CacheConfiguration[tmpCacheCfg.size()]; - - tmpCacheCfg.toArray(newCacheCfg); - - ctx.config().setCacheConfiguration(newCacheCfg); - } - - activeOnStart = currStatus; - } - - if (activeOnStart && !ctx.clientNode() && !ctx.isDaemon()) + if (active && !ctx.clientNode() && !ctx.isDaemon()) sharedCtx.database().lock(); // Must start database before start first cache. @@ -884,6 +815,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { ctx.query().onCacheKernalStart(); + // In shared context, we start exchange manager and wait until processed local join + // event, all caches which we get on join will be start. for (GridCacheSharedManager mgr : sharedCtx.managers()) { if (sharedCtx.database() != mgr) mgr.onKernalStart(false); @@ -893,8 +826,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { cacheStartedLatch.countDown(); } - // Escape if start active on start false - if (!activeOnStart) + // Escape if cluster inactive. + if (!active) return; if (!ctx.config().isDaemon()) @@ -1809,7 +1742,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { for (DynamicCacheDescriptor desc : started) { IgnitePredicate filter = desc.groupDescriptor().config().getNodeFilter(); - if (CU.affinityNode(ctx.discovery().localNode(), filter)) { + //Todo check second condition. + if (CU.affinityNode(ctx.discovery().localNode(), filter) || CU.isSystemCache(desc.cacheName())) { prepareCacheStart( desc, null, @@ -2029,7 +1963,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { sharedCtx.removeCacheContext(ctx); - onKernalStop(cache, req.destroy()); + // Todo cancel = true? + onKernalStop(cache, true); stopCache(cache, true, req.destroy()); @@ -2102,6 +2037,9 @@ public class GridCacheProcessor extends GridProcessorAdapter { try { stopCtx = prepareCacheStop(action.request(), forceClose); destroy = action.request().destroy(); + + if (exchActions.newClusterState() == null) + ctx.state().onCacheStop(action.request()); } finally { sharedCtx.database().checkpointReadUnlock(); @@ -2231,7 +2169,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { IgnitePageStoreManager pageStoreMgr = null; IgniteWriteAheadLogManager walMgr = null; - if (ctx.config().isPersistentStoreEnabled()) { + if (ctx.config().isPersistentStoreEnabled() && !ctx.clientNode()) { if (ctx.clientNode()) { U.warn(log, "Persistent Store is not supported on client nodes (Persistent Store's" + " configuration will be ignored)."); @@ -2288,24 +2226,37 @@ public class GridCacheProcessor extends GridProcessorAdapter { /** {@inheritDoc} */ @Override public void collectGridNodeData(DiscoveryDataBag dataBag) { - cachesInfo.collectGridNodeData(dataBag); - } - - /** - * @return {@code True} if need locally start all existing caches on client node start. - */ - private boolean startAllCachesOnClientStart() { - return startClientCaches && ctx.clientNode(); + if (ctx.state().active()) + cachesInfo.collectGridNodeData(dataBag); + else + ctx.state().collectGridNodeData0(dataBag); } /** {@inheritDoc} */ @Override public void onJoiningNodeDataReceived(JoiningNodeDiscoveryData data) { - cachesInfo.onJoiningNodeDataReceived(data); + if (ctx.state().active()) + cachesInfo.onJoiningNodeDataReceived(data); + + ctx.state().onJoiningNodeDataReceived0(data); } /** {@inheritDoc} */ @Override public void onGridDataReceived(GridDiscoveryData data) { - cachesInfo.onGridDataReceived(data); + if (ctx.state().active()) { + if (!cachesInfo.disconnectedState()) + cachesInfo.addJoinInfo(); + + cachesInfo.onGridDataReceived(data); + } + + ctx.state().onGridDataReceived0(data); + } + + /** + * @return {@code True} if need locally start all existing caches on client node start. + */ + private boolean startAllCachesOnClientStart() { + return startClientCaches && ctx.clientNode(); } /** @@ -2723,84 +2674,14 @@ public class GridCacheProcessor extends GridProcessorAdapter { return fut; } - /** - * - */ - public Collection startAllCachesRequests() throws IgniteCheckedException { - List reqs = new ArrayList<>(); - - if (!ctx.config().isDaemon() && - sharedCtx.pageStore() != null && - sharedCtx.database().persistenceEnabled()) { - Map savedCaches = sharedCtx.pageStore().readCacheConfigurations(); - - for (StoredCacheData cfg : savedCaches.values()) - reqs.add(createRequest(cfg.config(), false)); - - for (CacheConfiguration cfg : ctx.config().getCacheConfiguration()) { - if (!savedCaches.containsKey(cfg.getName())) - reqs.add(createRequest(cfg, true)); - } - } - else { - for (CacheConfiguration cfg : ctx.config().getCacheConfiguration()) - reqs.add(createRequest(cfg, true)); - } - - return reqs; - } - - /** - * - */ - public Collection stopAllCachesRequests() { - List reqs = new ArrayList<>(); - - for (String cacheName : cacheNames()) { - DynamicCacheChangeRequest req = DynamicCacheChangeRequest.stopRequest(ctx, cacheName, false, false); - - reqs.add(req); - } - - return reqs; - } - - /** - * @param cfg Cache configuration. - */ - private DynamicCacheChangeRequest createRequest( - CacheConfiguration cfg, - boolean needInit - ) throws IgniteCheckedException { - assert cfg != null; - assert cfg.getName() != null; - - cloneCheckSerializable(cfg); - - if (needInit) { - CacheObjectContext cacheObjCtx = ctx.cacheObjects().contextForCache(cfg); - - initialize(cfg, cacheObjCtx); - } - - String cacheName = cfg.getName(); - - DynamicCacheChangeRequest req = new DynamicCacheChangeRequest(UUID.randomUUID(), cacheName, ctx.localNodeId()); - - req.startCacheConfiguration(cfg); - req.template(cfg.getName().endsWith("*")); - req.nearCacheConfiguration(cfg.getNearConfiguration()); - req.deploymentId(IgniteUuid.randomUuid()); - req.schema(new QuerySchema(cfg.getQueryEntities())); + public CacheType cacheType (String cacheName ) { if (CU.isUtilityCache(cacheName)) - req.cacheType(CacheType.UTILITY); + return CacheType.UTILITY; else if (internalCaches.contains(cacheName)) - req.cacheType(CacheType.INTERNAL); + return CacheType.INTERNAL; else - req.cacheType(CacheType.USER); - - return req; + return CacheType.USER; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java index a2d319f..f46b4bc 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java @@ -138,7 +138,7 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm } /** {@inheritDoc} */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { if (marsh instanceof BinaryMarshaller) { if (ctx.clientNode()) ctx.event().addLocalEventListener(clientDisconLsnr, EVT_CLIENT_NODE_DISCONNECTED); @@ -251,8 +251,8 @@ public class CacheObjectBinaryProcessorImpl extends IgniteCacheObjectProcessorIm } /** {@inheritDoc} */ - @Override public void onKernalStart(boolean activeOnStart) throws IgniteCheckedException { - super.onKernalStart(activeOnStart); + @Override public void onKernalStart() throws IgniteCheckedException { + super.onKernalStart(); discoveryStarted = true; } http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java index 27650a2..a4ca5d2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java @@ -118,7 +118,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap initPageMemoryPolicies(memCfg); - registerMetricsMBeans(); + //registerMetricsMBeans(); startMemoryPolicies(); @@ -143,9 +143,11 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap * @param memPlcCfg Memory policy configuration. * @param cfg Ignite configuration. */ - private void registerMetricsMBean(MemoryMetricsImpl memMetrics, + private void registerMetricsMBean( + MemoryMetricsImpl memMetrics, MemoryPolicyConfiguration memPlcCfg, - IgniteConfiguration cfg) { + IgniteConfiguration cfg + ) { try { U.registerMBean( cfg.getMBeanServer(), @@ -660,7 +662,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap IgniteConfiguration cfg = cctx.gridConfig(); - try { + /* try { cfg.getMBeanServer().unregisterMBean( U.makeMBeanName( cfg.getIgniteInstanceName(), @@ -670,7 +672,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap catch (JMException e) { U.error(log, "Failed to unregister MBean for memory metrics: " + memPlc.memoryMetrics().getName(), e); - } + }*/ } } } @@ -949,12 +951,12 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap /** {@inheritDoc} */ @Override public void onActivate(GridKernalContext kctx) throws IgniteCheckedException { - // No-op. + start0(); } /** {@inheritDoc} */ @Override public void onDeActivate(GridKernalContext kctx) throws IgniteCheckedException { - // No-op. + stop0(true); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java index 40e21a0..01207e3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java @@ -104,7 +104,7 @@ public class GridClosureProcessor extends GridProcessorAdapter { } /** {@inheritDoc} */ - @Override public void start(boolean activeOnStart) throws IgniteCheckedException { + @Override public void start() throws IgniteCheckedException { if (log.isDebugEnabled()) log.debug("Started closure processor."); } http://git-wip-us.apache.org/repos/asf/ignite/blob/bdbba0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java index 26b1a2e..7cb8577 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java @@ -294,7 +294,7 @@ public class ClusterProcessor extends GridProcessorAdapter { } /** {@inheritDoc} */ - @Override public void onKernalStart(boolean activeOnStart) throws IgniteCheckedException { + @Override public void onKernalStart() throws IgniteCheckedException { if (notifyEnabled.get()) { try { verChecker = new GridUpdateNotifier(ctx.igniteInstanceName(),