Added Affinity topology version and Pending exchanges to Visor data collector task. (cherry picked from commit 7402ea1)
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b29b918a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b29b918a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b29b918a Branch: refs/heads/ignite-5398 Commit: b29b918aece6a99a12c8bf3f21c5419a9d97de25 Parents: d4c9997 Author: Alexey Kuznetsov <[email protected]> Authored: Fri May 19 14:18:23 2017 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Fri May 19 15:01:23 2017 +0700 ---------------------------------------------------------------------- .../node/VisorAffinityTopologyVersion.java | 72 ++++++++++++++++++++ .../visor/node/VisorNodeDataCollectorJob.java | 6 ++ .../node/VisorNodeDataCollectorJobResult.java | 40 +++++++++++ .../visor/node/VisorNodeDataCollectorTask.java | 4 ++ .../node/VisorNodeDataCollectorTaskResult.java | 31 ++++++++- 5 files changed, 152 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorAffinityTopologyVersion.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorAffinityTopologyVersion.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorAffinityTopologyVersion.java new file mode 100644 index 0000000..b3f6c48 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorAffinityTopologyVersion.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.internal.visor.node; + +import java.io.Serializable; +import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; +import org.apache.ignite.internal.util.typedef.internal.S; + +/** + * Data transfer object for {@link AffinityTopologyVersion} + */ +public class VisorAffinityTopologyVersion implements Serializable { + /** */ + private static final long serialVersionUID = 0L; + + /** */ + private long topVer; + + /** */ + private int minorTopVer; + + /** + * Default constructor. + */ + public VisorAffinityTopologyVersion() { + // No-op. + } + + /** + * Create data transfer object for affinity topology version. + * + * @param affTopVer Affinity topology version. + */ + public VisorAffinityTopologyVersion(AffinityTopologyVersion affTopVer) { + topVer = affTopVer.topologyVersion(); + minorTopVer = affTopVer.minorTopologyVersion(); + } + + /** + * @return Topology version. + */ + public long getTopologyVersion() { + return topVer; + } + + /** + * @return Minor topology version. + */ + public int getMinorTopologyVersion() { + return minorTopVer; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorAffinityTopologyVersion.class, this); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java index 694bc94..bfc3ac8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJob.java @@ -24,6 +24,7 @@ import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.configuration.FileSystemConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager; +import org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager; import org.apache.ignite.internal.processors.igfs.IgfsProcessorAdapter; import org.apache.ignite.internal.util.ipc.IpcServerEndpoint; import org.apache.ignite.internal.util.typedef.internal.S; @@ -236,6 +237,11 @@ public class VisorNodeDataCollectorJob extends VisorJob<VisorNodeDataCollectorTa VisorNodeDataCollectorTaskArg arg) { res.gridName(ignite.name()); + GridCachePartitionExchangeManager<Object, Object> exchange = ignite.context().cache().context().exchange(); + + res.readyAffinityVersion(new VisorAffinityTopologyVersion(exchange.readyAffinityVersion())); + res.hasPendingExchange(exchange.hasPendingExchange()); + res.topologyVersion(ignite.cluster().topologyVersion()); long start0 = U.currentTimeMillis(); http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java index 2c28c5e..d129e5f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorJobResult.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.visor.node; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; +import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.visor.cache.VisorCache; import org.apache.ignite.internal.visor.event.VisorGridEvent; import org.apache.ignite.internal.visor.igfs.VisorIgfs; @@ -65,6 +66,12 @@ public class VisorNodeDataCollectorJobResult implements Serializable { /** Errors count. */ private long errCnt; + /** Topology version of latest completed partition exchange. */ + private VisorAffinityTopologyVersion readyTopVer; + + /** Whether pending exchange future exists. */ + private boolean hasPendingExchange; + /** * @return Grid name. */ @@ -190,4 +197,37 @@ public class VisorNodeDataCollectorJobResult implements Serializable { public void errorCount(long errCnt) { this.errCnt = errCnt; } + + /** + * @return Topology version of latest completed partition exchange. + */ + public VisorAffinityTopologyVersion readyAffinityVersion() { + return readyTopVer; + } + + /** + * @param readyTopVer Topology version of latest completed partition exchange. + */ + public void readyAffinityVersion(VisorAffinityTopologyVersion readyTopVer) { + this.readyTopVer = readyTopVer; + } + + /** + * @return Whether pending exchange future exists. + */ + public boolean hasPendingExchange() { + return hasPendingExchange; + } + + /** + * @param hasPendingExchange Whether pending exchange future exists. + */ + public void hasPendingExchange(boolean hasPendingExchange) { + this.hasPendingExchange = hasPendingExchange; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorNodeDataCollectorJobResult.class, this); + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java index 0880ad7..061e2a7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTask.java @@ -113,5 +113,9 @@ public class VisorNodeDataCollectorTask extends VisorMultiNodeTask<VisorNodeData if (jobRes.igfssEx() != null) taskRes.igfssEx().put(nid, new VisorExceptionWrapper(jobRes.igfssEx())); + + taskRes.readyAffinityVersions().put(nid, jobRes.readyAffinityVersion()); + + taskRes.pendingExchanges().put(nid, jobRes.hasPendingExchange()); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/b29b918a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java index c6fe418..673c247 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; import org.apache.ignite.internal.LessNamingBean; +import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.visor.cache.VisorCache; import org.apache.ignite.internal.visor.event.VisorGridEvent; import org.apache.ignite.internal.visor.igfs.VisorIgfs; @@ -77,6 +78,13 @@ public class VisorNodeDataCollectorTaskResult implements Serializable, LessNamin /** Exceptions caught during collecting IGFS from nodes. */ private final Map<UUID, VisorExceptionWrapper> igfssEx = new HashMap<>(); + /** Topology version of latest completed partition exchange from nodes. */ + private Map<UUID, VisorAffinityTopologyVersion> readyTopVers = new HashMap<>(); + + /** Whether pending exchange future exists from nodes. */ + private Map<UUID, Boolean> pendingExchanges = new HashMap<>(); + + /** * @return {@code true} If no data was collected. */ @@ -92,7 +100,9 @@ public class VisorNodeDataCollectorTaskResult implements Serializable, LessNamin cachesEx.isEmpty() && igfss.isEmpty() && igfsEndpoints.isEmpty() && - igfssEx.isEmpty(); + igfssEx.isEmpty() && + readyTopVers.isEmpty() && + pendingExchanges.isEmpty(); } /** @@ -192,4 +202,23 @@ public class VisorNodeDataCollectorTaskResult implements Serializable, LessNamin public Map<UUID, Long> errorCounts() { return errCnts; } + + /** + * @return Topology version of latest completed partition exchange from nodes. + */ + public Map<UUID, VisorAffinityTopologyVersion> readyAffinityVersions() { + return readyTopVers; + } + + /** + * @return Whether pending exchange future exists from nodes. + */ + public Map<UUID, Boolean> pendingExchanges() { + return pendingExchanges; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(VisorNodeDataCollectorTaskResult.class, this); + } }
