/** */ boolean isCompatibleWith(BaselineTopology blt) { BaselineTopologyHistoryItem histBlt = hist.get(blt.id()); return histBlt.branchingHistory().contains(blt.branchingPointHash()); }
/** {@inheritDoc} */ @Override public void onReadyForRead(ReadOnlyMetastorage metastorage) throws IgniteCheckedException { BaselineTopology blt = (BaselineTopology) metastorage.read(METASTORE_CURR_BLT_KEY); if (blt != null) { if (log.isInfoEnabled()) U.log(log, "Restoring history for BaselineTopology[id=" + blt.id() + "]"); bltHist.restoreHistory(metastorage, blt.id()); } onStateRestored(blt); }
/** * @param blt Baseline Topology. */ public static BaselineTopologyHistoryItem fromBaseline(BaselineTopology blt) { if (blt == null) return null; List<Long> fullActivationHistory = new ArrayList<>(blt.branchingHistory().size()); fullActivationHistory.addAll(blt.branchingHistory()); return new BaselineTopologyHistoryItem(blt.id(), U.arrayList(blt.consistentIds()), fullActivationHistory); }
/** Returns current baseline topology id of {@code -1} if there's no baseline topology found. */ private int getBaselineTopologyId() { BaselineTopology baselineTop = ctx.state().clusterState().baselineTopology(); return baselineTop != null ? baselineTop.id() : -1; }
if (joiningNodeBlt.id() > clusterBlt.id()) { String msg = "BaselineTopology of joining node (" + node.consistentId() + ") is not compatible with BaselineTopology in the cluster." + " Joining node BlT id (" + joiningNodeBlt.id() + ") is greater than cluster BlT id (" + clusterBlt.id() + ")." + " New BaselineTopology was set on joining node with set-baseline command." + recommendation; if (joiningNodeBlt.id() == clusterBlt.id()) { if (!clusterBlt.isCompatibleWith(joiningNodeBlt)) { String msg = "BaselineTopology of joining node (" else if (joiningNodeBlt.id() < clusterBlt.id()) { if (!bltHist.isCompatibleWith(joiningNodeBlt)) { String msg = "BaselineTopology of joining node (" + node.consistentId() + ") is not compatible with BaselineTopology in the cluster." + " BlT id of joining node (" + joiningNodeBlt.id() + ") less than BlT id of cluster (" + clusterBlt.id() + ") but cluster's BaselineHistory doesn't contain branching point hash of joining node BlT (" + joiningNodeBlt.branchingPointHash()
/** * @param ig Ignite. * @param expBltId Expected BaselineTopology ID. * @param expBltHistSize Expected Baseline history size. * @param expBranchingHistSize Expected branching history size. * @param expActivationHash Expected activation hash. */ private void checkBaselineTopologyOnNode( Ignite ig, int expBltId, int expBltHistSize, int expBranchingHistSize, long expActivationHash) { BaselineTopology blt = getBaselineTopology(ig); BaselineTopologyHistory bltHist = getBaselineTopologyHistory(ig); assertNotNull(bltHist); assertEquals(expBltId, blt.id()); assertEquals(expBltHistSize, bltHist.history().size()); BaselineTopologyHistoryItem histItem = bltHist.history().get(0); assertEquals(expBranchingHistSize, histItem.branchingHistory().size()); assertEquals(expActivationHash, (long)histItem.branchingHistory().get(0)); }
int bltOffline = bltSize - bltOnline; clo.apply(" ^-- Baseline [id=" + blt.id() + ", size=" + bltSize + ", online=" + bltOnline + ", offline=" + bltOffline + ']');
/** * @param blt Blt. */ private void writeBaselineTopology(BaselineTopology blt, BaselineTopologyHistoryItem prevBltHistItem) throws IgniteCheckedException { assert metastorage != null; if (inMemoryMode) return; sharedCtx.database().checkpointReadLock(); try { if (blt != null) { if (log.isInfoEnabled()) { U.log(log, "Writing BaselineTopology[id=" + blt.id() + "]"); if (prevBltHistItem != null) U.log(log, "Writing BaselineTopologyHistoryItem[id=" + prevBltHistItem.id() + "]"); } bltHist.writeHistoryItem(metastorage, prevBltHistItem); metastorage.write(METASTORE_CURR_BLT_KEY, blt); } else { if (log.isInfoEnabled()) U.log(log, "Removing BaselineTopology and history"); metastorage.remove(METASTORE_CURR_BLT_KEY); bltHist.removeHistory(metastorage); } } finally { sharedCtx.database().checkpointReadUnlock(); } }
/** * Verifies that neither BaselineTopology nor BaselineTopologyHistory are changed when cluster is deactivated. */ @Test public void testBaselineTopologyRemainsTheSameOnClusterDeactivation() throws Exception { startGrids(2); IgniteEx srv = grid(0); srv.cluster().active(true); awaitPartitionMapExchange(); assertTrue(srv.cluster().active()); srv.cluster().active(false); BaselineTopology blt = getBaselineTopology(srv); BaselineTopologyHistory bltHist = getBaselineTopologyHistory(srv); assertEquals(0, blt.id()); assertEquals(2, blt.consistentIds().size()); assertEquals(1, blt.branchingHistory().size()); assertEquals(0, bltHist.history().size()); }
int lastId = joiningNodeState.baselineTopology().id();
U.log(log, "Received " + prettyStr(msg.activate()) + " request with BaselineTopology" + (msg.baselineTopology() == null ? ": null" : "[id=" + msg.baselineTopology().id() + "]"));
/** */ boolean isCompatibleWith(BaselineTopology blt) { BaselineTopologyHistoryItem histBlt = hist.get(blt.id()); return histBlt.branchingHistory().contains(blt.branchingPointHash()); }
/** {@inheritDoc} */ @Override public void onReadyForRead(ReadOnlyMetastorage metastorage) throws IgniteCheckedException { BaselineTopology blt = (BaselineTopology) metastorage.read(METASTORE_CURR_BLT_KEY); if (blt != null) { if (log.isInfoEnabled()) U.log(log, "Restoring history for BaselineTopology[id=" + blt.id() + "]"); bltHist.restoreHistory(metastorage, blt.id()); } onStateRestored(blt); }
/** * @param blt Baseline Topology. */ public static BaselineTopologyHistoryItem fromBaseline(BaselineTopology blt) { if (blt == null) return null; List<Long> fullActivationHistory = new ArrayList<>(blt.branchingHistory().size()); fullActivationHistory.addAll(blt.branchingHistory()); return new BaselineTopologyHistoryItem(blt.id(), U.arrayList(blt.consistentIds()), fullActivationHistory); }
int bltOffline = bltSize - bltOnline; clo.apply(" ^-- Baseline [id=" + blt.id() + ", size=" + bltSize + ", online=" + bltOnline + ", offline=" + bltOffline + ']');
/** * @param blt Blt. */ private void writeBaselineTopology(BaselineTopology blt, BaselineTopologyHistoryItem prevBltHistItem) throws IgniteCheckedException { assert metastorage != null; if (inMemoryMode) return; sharedCtx.database().checkpointReadLock(); try { if (blt != null) { if (log.isInfoEnabled()) { U.log(log, "Writing BaselineTopology[id=" + blt.id() + "]"); if (prevBltHistItem != null) U.log(log, "Writing BaselineTopologyHistoryItem[id=" + prevBltHistItem.id() + "]"); } bltHist.writeHistoryItem(metastorage, prevBltHistItem); metastorage.write(METASTORE_CURR_BLT_KEY, blt); } else { if (log.isInfoEnabled()) U.log(log, "Removing BaselineTopology and history"); metastorage.remove(METASTORE_CURR_BLT_KEY); bltHist.removeHistory(metastorage); } } finally { sharedCtx.database().checkpointReadUnlock(); } }
U.log(log, "Received " + prettyStr(msg.activate()) + " request with BaselineTopology" + (msg.baselineTopology() == null ? ": null" : "[id=" + msg.baselineTopology().id() + "]"));
int lastId = joiningNodeState.baselineTopology().id();