You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/10/24 09:46:34 UTC
ignite git commit: IGNITE-9881 Added events for management tasks -
Fixes #5006.
Repository: ignite
Updated Branches:
refs/heads/master 0d7535340 -> ff29b6791
IGNITE-9881 Added events for management tasks - Fixes #5006.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ff29b679
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ff29b679
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ff29b679
Branch: refs/heads/master
Commit: ff29b679174b19c6372ec3f84bde937c45fa0a3a
Parents: 0d75353
Author: Andrei Aleksandrov <ae...@gmail.com>
Authored: Wed Oct 24 12:39:19 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Oct 24 12:41:03 2018 +0300
----------------------------------------------------------------------
.../org/apache/ignite/events/EventType.java | 10 +
.../managers/deployment/GridDeployment.java | 16 ++
.../processors/task/GridTaskProcessor.java | 20 ++
.../task/GridVisorManagementTask.java | 38 ++++
.../visor/baseline/VisorBaselineTask.java | 2 +
.../VisorBinaryMetadataCollectorTask.java | 2 +
.../visor/cache/VisorCacheAffinityNodeTask.java | 2 +
.../visor/cache/VisorCacheClearTask.java | 2 +
.../visor/cache/VisorCacheLoadTask.java | 2 +
.../cache/VisorCacheLostPartitionsTask.java | 2 +
.../cache/VisorCacheLostPartitionsTaskArg.java | 10 +-
.../visor/cache/VisorCacheModifyTask.java | 2 +
.../visor/cache/VisorCacheModifyTaskArg.java | 6 +
.../visor/cache/VisorCacheRebalanceTask.java | 2 +
.../VisorCacheResetLostPartitionsTask.java | 2 +
.../VisorCacheResetLostPartitionsTaskArg.java | 8 +
.../visor/cache/VisorCacheStartTask.java | 2 +
.../visor/cache/VisorCacheStopTask.java | 2 +
.../compute/VisorComputeCancelSessionsTask.java | 2 +
.../compute/VisorComputeResetMetricsTask.java | 2 +
.../visor/debug/VisorThreadDumpTask.java | 2 +
.../visor/igfs/VisorIgfsFormatTask.java | 2 +
.../visor/igfs/VisorIgfsProfilerClearTask.java | 2 +
.../visor/igfs/VisorIgfsResetMetricsTask.java | 2 +
.../internal/visor/log/VisorLogSearchTask.java | 2 +
.../misc/VisorChangeGridActiveStateTask.java | 2 +
.../internal/visor/node/VisorNodeGcTask.java | 2 +
.../internal/visor/node/VisorNodePingTask.java | 2 +
.../visor/node/VisorNodeRestartTask.java | 2 +
.../internal/visor/node/VisorNodeStopTask.java | 2 +
.../visor/query/VisorQueryCancelTask.java | 2 +
.../visor/query/VisorQueryResetMetricsTask.java | 2 +
.../internal/visor/query/VisorQueryTask.java | 2 +
.../visor/service/VisorCancelServiceTask.java | 2 +
.../TestManagementVisorMultiNodeTask.java | 66 +++++++
.../TestManagementVisorOneNodeTask.java | 66 +++++++
.../TestNotManagementVisorMultiNodeTask.java | 64 +++++++
.../TestNotManagementVisorOneNodeTask.java | 64 +++++++
.../internal/VisorManagementEventSelfTest.java | 192 +++++++++++++++++++
.../testsuites/IgniteComputeGridTestSuite.java | 3 +
40 files changed, 616 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/events/EventType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/events/EventType.java b/modules/core/src/main/java/org/apache/ignite/events/EventType.java
index 485e567..97017d6 100644
--- a/modules/core/src/main/java/org/apache/ignite/events/EventType.java
+++ b/modules/core/src/main/java/org/apache/ignite/events/EventType.java
@@ -245,6 +245,16 @@ public interface EventType {
public static final int EVT_TASK_REDUCED = 25;
/**
+ * Built-in event type: Visor or Web Console management task started.
+ * <p>
+ * NOTE: all types in range <b>from 1 to 1000 are reserved</b> for
+ * internal Ignite events and should not be used by user-defined events.
+ *
+ * @see TaskEvent
+ */
+ public static final int EVT_MANAGEMENT_TASK_STARTED = 26;
+
+ /**
* Built-in event type: non-task class deployed.
* <p>
* NOTE: all types in range <b>from 1 to 1000 are reserved</b> for
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java
index c3efc59..3450aa5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeployment.java
@@ -35,6 +35,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.compute.ComputeTask;
import org.apache.ignite.configuration.DeploymentMode;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.GridLeanSet;
import org.apache.ignite.internal.util.lang.GridMetadataAwareAdapter;
import org.apache.ignite.internal.util.lang.GridPeerDeployAware;
@@ -45,6 +46,7 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteUuid;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.concurrent.ConcurrentHashMap;
@@ -384,6 +386,20 @@ public class GridDeployment extends GridMetadataAwareAdapter implements GridDepl
}
/**
+ * Checks whether task class is annotated with {@link GridVisorManagementTask}.
+ *
+ * @param task Task.
+ * @param taskCls Task class.
+ * @return {@code True} if task is internal.
+ */
+ @SuppressWarnings("unchecked")
+ public boolean visorManagementTask(@Nullable ComputeTask task, @NotNull Class<?> taskCls) {
+ return annotation(task instanceof GridPeerDeployAware ?
+ ((GridPeerDeployAware)task).deployClass() : taskCls,
+ GridVisorManagementTask.class) != null;
+ }
+
+ /**
* @param cls Class to create new instance of (using default constructor).
* @return New instance.
* @throws IgniteCheckedException If failed.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
index fb6be71..d3f64be 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
@@ -73,6 +73,7 @@ import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorTaskArgument;
import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.lang.IgniteUuid;
@@ -83,6 +84,7 @@ import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
import static org.apache.ignite.events.EventType.EVT_TASK_SESSION_ATTR_SET;
+import static org.apache.ignite.events.EventType.EVT_MANAGEMENT_TASK_STARTED;
import static org.apache.ignite.internal.GridTopic.TOPIC_JOB_SIBLINGS;
import static org.apache.ignite.internal.GridTopic.TOPIC_TASK;
import static org.apache.ignite.internal.GridTopic.TOPIC_TASK_CANCEL;
@@ -768,6 +770,24 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
assert taskWorker0 == null : "Session ID is not unique: " + sesId;
+ if (ctx.event().isRecordable(EVT_MANAGEMENT_TASK_STARTED) && dep.visorManagementTask(task, taskCls)) {
+ VisorTaskArgument visorTaskArgument = (VisorTaskArgument)arg;
+
+ Event evt = new TaskEvent(
+ ctx.discovery().localNode(),
+ visorTaskArgument != null && visorTaskArgument.getArgument() != null
+ ? visorTaskArgument.getArgument().toString() : "[]",
+ EVT_MANAGEMENT_TASK_STARTED,
+ ses.getId(),
+ taskCls == null ? null : taskCls.getSimpleName(),
+ "VisorManagementTask",
+ false,
+ subjId
+ );
+
+ ctx.event().record(evt);
+ }
+
if (!ctx.clientDisconnected()) {
if (dep.annotation(taskCls, ComputeTaskMapAsync.class) != null) {
try {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridVisorManagementTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridVisorManagementTask.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridVisorManagementTask.java
new file mode 100644
index 0000000..09c87bf
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridVisorManagementTask.java
@@ -0,0 +1,38 @@
+/*
+ * 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.processors.task;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that annotated task is a visor task that was invoked by user. They can be handled by event listeners.
+ *
+ * This annotation intended for internal use only.
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface GridVisorManagementTask {
+ // No-op.
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java
index 3c00452..be5fcca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/baseline/VisorBaselineTask.java
@@ -27,6 +27,7 @@ import org.apache.ignite.cluster.BaselineNode;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.cluster.IgniteClusterEx;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
@@ -37,6 +38,7 @@ import org.jetbrains.annotations.Nullable;
* Task that will collect information about baseline topology and can change its state.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorBaselineTask extends VisorOneNodeTask<VisorBaselineTaskArg, VisorBaselineTaskResult> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java
index bf072e2..c62c658 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.visor.binary;
import org.apache.ignite.IgniteBinary;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -29,6 +30,7 @@ import org.apache.ignite.marshaller.Marshaller;
* Task that collects binary metadata.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorBinaryMetadataCollectorTask
extends VisorOneNodeTask<VisorBinaryMetadataCollectorTaskArg, VisorBinaryMetadataCollectorTaskResult> {
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java
index 447cc11..439b8d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityNodeTask.java
@@ -21,6 +21,7 @@ import java.util.UUID;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -30,6 +31,7 @@ import org.jetbrains.annotations.Nullable;
* Task that will find affinity node for key.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheAffinityNodeTask extends VisorOneNodeTask<VisorCacheAffinityNodeTaskArg, UUID> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
index bdfc9eb..68142b9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
@@ -21,6 +21,7 @@ import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.CachePeekMode;
import org.apache.ignite.compute.ComputeJobContext;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -32,6 +33,7 @@ import org.apache.ignite.resources.JobContextResource;
* Task that clears specified caches on specified node.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheClearTask extends VisorOneNodeTask<VisorCacheClearTaskArg, VisorCacheClearTaskResult> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java
index 7b25ae4..5d1bccd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java
@@ -26,6 +26,7 @@ import javax.cache.expiry.ExpiryPolicy;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.CachePeekMode;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorJob;
@@ -35,6 +36,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Task to loads caches.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheLoadTask extends
VisorOneNodeTask<VisorCacheLoadTaskArg, Map<String, Integer>> {
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTask.java
index 9785b9c..daa4af7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTask.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopology;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -32,6 +33,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Collect list of lost partitions.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheLostPartitionsTask
extends VisorOneNodeTask<VisorCacheLostPartitionsTaskArg, VisorCacheLostPartitionsTaskResult> {
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTaskArg.java
index d6404bf..3ccaeaa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTaskArg.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLostPartitionsTaskArg.java
@@ -35,6 +35,9 @@ public class VisorCacheLostPartitionsTaskArg extends VisorDataTransferObject {
/** List of cache names. */
private List<String> cacheNames;
+ /** Created for toString method because Collection can't be printed. */
+ private String modifiedCaches;
+
/**
* Default constructor.
*/
@@ -47,6 +50,9 @@ public class VisorCacheLostPartitionsTaskArg extends VisorDataTransferObject {
*/
public VisorCacheLostPartitionsTaskArg(List<String> cacheNames) {
this.cacheNames = cacheNames;
+
+ if (cacheNames != null)
+ modifiedCaches = cacheNames.toString();
}
/**
@@ -59,11 +65,13 @@ public class VisorCacheLostPartitionsTaskArg extends VisorDataTransferObject {
/** {@inheritDoc} */
@Override protected void writeExternalData(ObjectOutput out) throws IOException {
U.writeCollection(out, cacheNames);
+ U.writeString(out, modifiedCaches);
}
/** {@inheritDoc} */
- @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
cacheNames = U.readList(in);
+ modifiedCaches = U.readString(in);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTask.java
index 62e7ac6..f68efa8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTask.java
@@ -21,6 +21,7 @@ import java.util.UUID;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -31,6 +32,7 @@ import org.apache.ignite.internal.visor.util.VisorTaskUtils;
* Task that modify value in specified cache.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheModifyTask extends VisorOneNodeTask<VisorCacheModifyTaskArg, VisorCacheModifyTaskResult> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTaskArg.java
index bef73ed..3948a2f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTaskArg.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheModifyTaskArg.java
@@ -43,6 +43,9 @@ public class VisorCacheModifyTaskArg extends VisorDataTransferObject {
/** Specified value. */
private Object val;
+ /** Created for toString method because Object can't be printed. */
+ private String modifiedValues;
+
/**
* Default constructor.
*/
@@ -61,6 +64,7 @@ public class VisorCacheModifyTaskArg extends VisorDataTransferObject {
this.mode = mode;
this.key = key;
this.val = val;
+ this.modifiedValues = "[Key=" + key + ", Value=" + val + "]";
}
/**
@@ -97,6 +101,7 @@ public class VisorCacheModifyTaskArg extends VisorDataTransferObject {
U.writeEnum(out, mode);
out.writeObject(key);
out.writeObject(val);
+ U.writeString(out, modifiedValues);
}
/** {@inheritDoc} */
@@ -105,6 +110,7 @@ public class VisorCacheModifyTaskArg extends VisorDataTransferObject {
mode = VisorModifyCacheMode.fromOrdinal(in.readByte());
key = in.readObject();
val = in.readObject();
+ modifiedValues = U.readString(in);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java
index 87a2ce6..9c3fd37 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java
@@ -23,6 +23,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorJob;
@@ -32,6 +33,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Pre-loads caches. Made callable just to conform common pattern.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheRebalanceTask extends VisorOneNodeTask<VisorCacheRebalanceTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTask.java
index 2ad88ee..aa90d3e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTask.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.visor.cache;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -26,6 +27,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Reset lost partitions for caches.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheResetLostPartitionsTask extends VisorOneNodeTask<VisorCacheResetLostPartitionsTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTaskArg.java
index 2f365c8..5f60730 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTaskArg.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetLostPartitionsTaskArg.java
@@ -35,6 +35,9 @@ public class VisorCacheResetLostPartitionsTaskArg extends VisorDataTransferObjec
/** List of cache names. */
private List<String> cacheNames;
+ /** Created for toString method because Collection can't be printed. */
+ private String modifiedCaches;
+
/**
* Default constructor.
*/
@@ -47,6 +50,9 @@ public class VisorCacheResetLostPartitionsTaskArg extends VisorDataTransferObjec
*/
public VisorCacheResetLostPartitionsTaskArg(List<String> cacheNames) {
this.cacheNames = cacheNames;
+
+ if(cacheNames != null)
+ modifiedCaches = cacheNames.toString();
}
/**
@@ -59,11 +65,13 @@ public class VisorCacheResetLostPartitionsTaskArg extends VisorDataTransferObjec
/** {@inheritDoc} */
@Override protected void writeExternalData(ObjectOutput out) throws IOException {
U.writeCollection(out, cacheNames);
+ U.writeString(out, modifiedCaches);
}
/** {@inheritDoc} */
@Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
cacheNames = U.readList(in);
+ modifiedCaches = U.readString(in);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartTask.java
index 5f6337b..7663827 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartTask.java
@@ -29,6 +29,7 @@ import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
@@ -40,6 +41,7 @@ import org.jetbrains.annotations.Nullable;
* Task that start cache or near cache with specified configuration.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheStartTask extends VisorMultiNodeTask<VisorCacheStartTaskArg, Map<UUID, IgniteException>, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java
index df95c5e..b76fc3d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.visor.cache;
import java.util.Collection;
import java.util.HashSet;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
@@ -29,6 +30,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Task that stop specified caches on specified node.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCacheStopTask extends VisorOneNodeTask<VisorCacheStopTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeCancelSessionsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeCancelSessionsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeCancelSessionsTask.java
index 6cd683c..8b29a40 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeCancelSessionsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeCancelSessionsTask.java
@@ -24,6 +24,7 @@ import org.apache.ignite.IgniteCompute;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.compute.ComputeTaskFuture;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -34,6 +35,7 @@ import org.jetbrains.annotations.Nullable;
* Cancels given tasks sessions.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorComputeCancelSessionsTask extends VisorOneNodeTask<VisorComputeCancelSessionsTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeResetMetricsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeResetMetricsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeResetMetricsTask.java
index eefeb74..ac3e18b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeResetMetricsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/compute/VisorComputeResetMetricsTask.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.visor.compute;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -26,6 +27,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Reset compute grid metrics task.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorComputeResetMetricsTask extends VisorOneNodeTask<Void, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/debug/VisorThreadDumpTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/debug/VisorThreadDumpTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/debug/VisorThreadDumpTask.java
index 9c6aa60..f064028 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/debug/VisorThreadDumpTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/debug/VisorThreadDumpTask.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.visor.debug;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorJob;
@@ -29,6 +30,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Creates thread dump.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorThreadDumpTask extends VisorOneNodeTask<Void, VisorThreadDumpTaskResult> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsFormatTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsFormatTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsFormatTask.java
index e4685b7..340abea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsFormatTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsFormatTask.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.visor.igfs;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -27,6 +28,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Format IGFS instance.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorIgfsFormatTask extends VisorOneNodeTask<VisorIgfsFormatTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java
index c730840..dc1a30a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsProfilerClearTask.java
@@ -28,6 +28,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteFileSystem;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.visor.VisorJob;
@@ -39,6 +40,7 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.resolveIgfsPr
* Remove all IGFS profiler logs.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorIgfsProfilerClearTask extends VisorOneNodeTask<VisorIgfsProfilerClearTaskArg, VisorIgfsProfilerClearTaskResult> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsResetMetricsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsResetMetricsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsResetMetricsTask.java
index ee90edf..b1eadda 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsResetMetricsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/igfs/VisorIgfsResetMetricsTask.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.visor.igfs;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -27,6 +28,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Resets IGFS metrics.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorIgfsResetMetricsTask extends VisorOneNodeTask<VisorIgfsResetMetricsTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java
index e4d2882..04ee29c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/log/VisorLogSearchTask.java
@@ -30,6 +30,7 @@ import java.util.UUID;
import org.apache.ignite.IgniteException;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.io.GridReversedLinesFileReader;
import org.apache.ignite.internal.util.lang.GridTuple3;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -48,6 +49,7 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.textFile;
* Search text matching in logs
*/
@GridInternal
+@GridVisorManagementTask
public class VisorLogSearchTask extends VisorMultiNodeTask<VisorLogSearchTaskArg, VisorLogSearchTaskResult,
Collection<VisorLogSearchResult>> {
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorChangeGridActiveStateTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorChangeGridActiveStateTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorChangeGridActiveStateTask.java
index bde4d6c..86aee03 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorChangeGridActiveStateTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/misc/VisorChangeGridActiveStateTask.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.visor.misc;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -26,6 +27,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Task for changing grid active state.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorChangeGridActiveStateTask extends VisorOneNodeTask<VisorChangeGridActiveStateTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java
index bdc1104..1e0ca47 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeGcTask.java
@@ -25,6 +25,7 @@ import org.apache.ignite.cluster.ClusterMetrics;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorMultiNodeTask;
@@ -34,6 +35,7 @@ import org.jetbrains.annotations.Nullable;
* Task to run gc on nodes.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorNodeGcTask extends VisorMultiNodeTask<Void, Map<UUID, VisorNodeGcTaskResult>, VisorNodeGcTaskResult> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java
index ee2e968..656d12a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodePingTask.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.apache.ignite.cluster.ClusterTopologyException;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -30,6 +31,7 @@ import org.jetbrains.annotations.Nullable;
* Ping other node.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorNodePingTask extends VisorOneNodeTask<VisorNodePingTaskArg, VisorNodePingTaskResult> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeRestartTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeRestartTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeRestartTask.java
index bb29371..693665a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeRestartTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeRestartTask.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.apache.ignite.Ignition;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorMultiNodeTask;
@@ -30,6 +31,7 @@ import org.jetbrains.annotations.Nullable;
* Restarts nodes.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorNodeRestartTask extends VisorMultiNodeTask<Void, Void, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeStopTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeStopTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeStopTask.java
index 16bf5d6..6581e44 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeStopTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeStopTask.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.apache.ignite.Ignition;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorMultiNodeTask;
@@ -30,6 +31,7 @@ import org.jetbrains.annotations.Nullable;
* Stops nodes.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorNodeStopTask extends VisorMultiNodeTask<Void, Void, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCancelTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCancelTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCancelTask.java
index 207b690..32dc93c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCancelTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCancelTask.java
@@ -22,6 +22,7 @@ import java.util.List;
import org.apache.ignite.IgniteException;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
import org.jetbrains.annotations.Nullable;
@@ -30,6 +31,7 @@ import org.jetbrains.annotations.Nullable;
* Task to cancel queries.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorQueryCancelTask extends VisorOneNodeTask<VisorQueryCancelTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java
index 1d807f1..a339f8d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.visor.query;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -27,6 +28,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Reset compute grid query metrics.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorQueryResetMetricsTask extends VisorOneNodeTask<VisorQueryResetMetricsTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java
index b5af1b0..97ee83e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java
@@ -28,6 +28,7 @@ import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.internal.processors.cache.IgniteCacheProxy;
import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -44,6 +45,7 @@ import static org.apache.ignite.internal.visor.query.VisorQueryUtils.scheduleRes
* Task for execute SQL fields query and get first page of results.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorQueryTask extends VisorOneNodeTask<VisorQueryTaskArg, VisorEither<VisorQueryResult>> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java
index 53c3bb3..1bb7ecd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.visor.service;
import org.apache.ignite.IgniteServices;
import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.visor.VisorJob;
import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -27,6 +28,7 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
* Task for cancel services with specified name.
*/
@GridInternal
+@GridVisorManagementTask
public class VisorCancelServiceTask extends VisorOneNodeTask<VisorCancelServiceTaskArg, Void> {
/** */
private static final long serialVersionUID = 0L;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/test/java/org/apache/ignite/internal/TestManagementVisorMultiNodeTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/TestManagementVisorMultiNodeTask.java b/modules/core/src/test/java/org/apache/ignite/internal/TestManagementVisorMultiNodeTask.java
new file mode 100644
index 0000000..beccd79
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/TestManagementVisorMultiNodeTask.java
@@ -0,0 +1,66 @@
+/*
+ * 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;
+
+import java.util.List;
+import org.apache.ignite.compute.ComputeJobResult;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
+import org.apache.ignite.internal.visor.VisorJob;
+import org.apache.ignite.internal.visor.VisorMultiNodeTask;
+import org.apache.ignite.internal.visor.VisorTaskArgument;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ *
+ */
+@GridVisorManagementTask
+public class TestManagementVisorMultiNodeTask extends VisorMultiNodeTask<VisorTaskArgument, Object, Object> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override protected VisorValidMultiNodeJob job(VisorTaskArgument arg) {
+ return new VisorValidMultiNodeJob(arg, debug);
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override protected Object reduce0(List<ComputeJobResult> results) {
+ return null;
+ }
+
+ /**
+ * Valid Management multi node visor job.
+ */
+ private static class VisorValidMultiNodeJob extends VisorJob<VisorTaskArgument, Object> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * @param arg Argument.
+ * @param debug Debug flag.
+ */
+ protected VisorValidMultiNodeJob(VisorTaskArgument arg, boolean debug) {
+ super(arg, debug);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected Object run(VisorTaskArgument arg) {
+ return null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/test/java/org/apache/ignite/internal/TestManagementVisorOneNodeTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/TestManagementVisorOneNodeTask.java b/modules/core/src/test/java/org/apache/ignite/internal/TestManagementVisorOneNodeTask.java
new file mode 100644
index 0000000..f7479af
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/TestManagementVisorOneNodeTask.java
@@ -0,0 +1,66 @@
+/*
+ * 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;
+
+import java.util.List;
+import org.apache.ignite.compute.ComputeJobResult;
+import org.apache.ignite.internal.processors.task.GridVisorManagementTask;
+import org.apache.ignite.internal.visor.VisorJob;
+import org.apache.ignite.internal.visor.VisorOneNodeTask;
+import org.apache.ignite.internal.visor.VisorTaskArgument;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ *
+ */
+@GridVisorManagementTask
+public class TestManagementVisorOneNodeTask extends VisorOneNodeTask<VisorTaskArgument, Object> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override protected VisorValidOneNodeJob job(VisorTaskArgument arg) {
+ return new VisorValidOneNodeJob(arg, debug);
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override protected Object reduce0(List<ComputeJobResult> results) {
+ return null;
+ }
+
+ /**
+ * Valid Management one node visor job.
+ */
+ private static class VisorValidOneNodeJob extends VisorJob<VisorTaskArgument, Object> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * @param arg Argument.
+ * @param debug Debug flag.
+ */
+ protected VisorValidOneNodeJob(VisorTaskArgument arg, boolean debug) {
+ super(arg, debug);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected Object run(VisorTaskArgument arg) {
+ return null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/test/java/org/apache/ignite/internal/TestNotManagementVisorMultiNodeTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/TestNotManagementVisorMultiNodeTask.java b/modules/core/src/test/java/org/apache/ignite/internal/TestNotManagementVisorMultiNodeTask.java
new file mode 100644
index 0000000..d8f2793
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/TestNotManagementVisorMultiNodeTask.java
@@ -0,0 +1,64 @@
+/*
+ * 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;
+
+import java.util.List;
+import org.apache.ignite.compute.ComputeJobResult;
+import org.apache.ignite.internal.visor.VisorJob;
+import org.apache.ignite.internal.visor.VisorMultiNodeTask;
+import org.apache.ignite.internal.visor.VisorTaskArgument;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ *
+ */
+public class TestNotManagementVisorMultiNodeTask extends VisorMultiNodeTask<VisorTaskArgument, Object, Object> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override protected VisorNotManagementMultiNodeJob job(VisorTaskArgument arg) {
+ return new VisorNotManagementMultiNodeJob(arg, debug);
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override protected Object reduce0(List<ComputeJobResult> results) {
+ return null;
+ }
+
+ /**
+ * Not management multi node visor job.
+ */
+ private static class VisorNotManagementMultiNodeJob extends VisorJob<VisorTaskArgument, Object> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * @param arg Argument.
+ * @param debug Debug flag.
+ */
+ protected VisorNotManagementMultiNodeJob(VisorTaskArgument arg, boolean debug) {
+ super(arg, debug);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected Object run(VisorTaskArgument arg) {
+ return null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/test/java/org/apache/ignite/internal/TestNotManagementVisorOneNodeTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/TestNotManagementVisorOneNodeTask.java b/modules/core/src/test/java/org/apache/ignite/internal/TestNotManagementVisorOneNodeTask.java
new file mode 100644
index 0000000..ea47ee0
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/TestNotManagementVisorOneNodeTask.java
@@ -0,0 +1,64 @@
+/*
+ * 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;
+
+import java.util.List;
+import org.apache.ignite.compute.ComputeJobResult;
+import org.apache.ignite.internal.visor.VisorJob;
+import org.apache.ignite.internal.visor.VisorOneNodeTask;
+import org.apache.ignite.internal.visor.VisorTaskArgument;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ *
+ */
+public class TestNotManagementVisorOneNodeTask extends VisorOneNodeTask<VisorTaskArgument, Object> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** {@inheritDoc} */
+ @Override protected VisorNotManagementOneNodeJob job(VisorTaskArgument arg) {
+ return new VisorNotManagementOneNodeJob(arg, debug);
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override protected Object reduce0(List<ComputeJobResult> results) {
+ return null;
+ }
+
+ /**
+ * Not management one node visor job.
+ */
+ private static class VisorNotManagementOneNodeJob extends VisorJob<VisorTaskArgument, Object> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * @param arg Argument.
+ * @param debug Debug flag.
+ */
+ protected VisorNotManagementOneNodeJob(VisorTaskArgument arg, boolean debug) {
+ super(arg, debug);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected Object run(VisorTaskArgument arg) {
+ return null;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/test/java/org/apache/ignite/internal/VisorManagementEventSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/VisorManagementEventSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/VisorManagementEventSelfTest.java
new file mode 100644
index 0000000..1e8e0ca
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/VisorManagementEventSelfTest.java
@@ -0,0 +1,192 @@
+/*
+ * 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;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.compute.ComputeTask;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.events.EventType;
+import org.apache.ignite.events.TaskEvent;
+import org.apache.ignite.internal.visor.VisorTaskArgument;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+import static org.apache.ignite.events.EventType.EVT_MANAGEMENT_TASK_STARTED;;
+
+/**
+ *
+ */
+public class VisorManagementEventSelfTest extends GridCommonAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+ IgniteConfiguration cfg = new IgniteConfiguration();
+
+ // Enable visor management events.
+ cfg.setIncludeEventTypes(
+ EVT_MANAGEMENT_TASK_STARTED
+ );
+
+ cfg.setCacheConfiguration(
+ new CacheConfiguration<Integer, Integer>()
+ .setName("TEST")
+ .setIndexedTypes(Integer.class, Integer.class)
+ .setStatisticsEnabled(true)
+ );
+
+ TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
+
+ List<String> addrs = Arrays.asList("127.0.0.1:47500..47502");
+
+ ipFinder.setAddresses(addrs);
+
+ TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+
+ discoSpi.setIpFinder(ipFinder);
+
+ cfg.setDiscoverySpi(discoSpi);
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ stopAllGrids();
+
+ cleanPersistenceDir();
+
+ super.afterTest();
+ }
+
+ /**
+ * Current test case start valid one node visor task that has GridVisorManagementTask annotation.
+ * No exceptions are expected.
+ *
+ * @throws Exception If failed.
+ */
+ public void testManagementOneNodeVisorTask() throws Exception {
+ IgniteEx ignite = startGrid(0);
+
+ doTestVisorTask(TestManagementVisorOneNodeTask.class, new VisorTaskArgument(), ignite);
+ }
+
+ /**
+ * Current test case start valid multi node visor task that has GridVisorManagementTask annotation.
+ * No exceptions are expected.
+ *
+ * @throws Exception If failed.
+ */
+ public void testManagementMultiNodeVisorTask() throws Exception {
+ IgniteEx ignite = startGrid(0);
+
+ doTestVisorTask(TestManagementVisorMultiNodeTask.class, new VisorTaskArgument(), ignite);
+ }
+
+ /**
+ * Current test case start one node visor task that has not GridVisorManagementTask annotation.
+ * No exceptions are expected.
+ *
+ * @throws Exception If failed.
+ */
+ public void testNotManagementOneNodeVisorTask() throws Exception {
+ IgniteEx ignite = startGrid(0);
+
+ doTestNotManagementVisorTask(TestNotManagementVisorOneNodeTask.class, new VisorTaskArgument(), ignite);
+ }
+
+ /**
+ * Current test case start multi node visor task that has not GridVisorManagementTask annotation.
+ * No exceptions are expected.
+ *
+ * @throws Exception If failed.
+ */
+ public void testNotManagementMultiNodeVisorTask() throws Exception {
+ IgniteEx ignite = startGrid(0);
+
+ doTestNotManagementVisorTask(TestNotManagementVisorMultiNodeTask.class, new VisorTaskArgument(), ignite);
+ }
+
+ /**
+ * @param cls class of the task.
+ * @param arg argument.
+ * @param ignite instance of Ignite.
+ *
+ * @throws Exception If failed.
+ */
+ private <T, R> void doTestVisorTask(
+ Class<? extends ComputeTask<VisorTaskArgument<T>, R>> cls, T arg, IgniteEx ignite) throws Exception
+ {
+ final AtomicReference<TaskEvent> evt = new AtomicReference<>();
+
+ final CountDownLatch evtLatch = new CountDownLatch(1);
+
+ ignite.events().localListen(new IgnitePredicate<TaskEvent>() {
+ @Override public boolean apply(TaskEvent e) {
+ evt.set(e);
+
+ evtLatch.countDown();
+
+ return false;
+ }
+ }, EventType.EVT_MANAGEMENT_TASK_STARTED);
+
+ for (ClusterNode node : ignite.cluster().forServers().nodes())
+ ignite.compute().executeAsync(cls, new VisorTaskArgument<>(node.id(), arg, true));
+
+ assertTrue(evtLatch.await(10000, TimeUnit.MILLISECONDS));
+
+ assertNotNull(evt.get());
+ }
+
+ /**
+ * @param cls class of the task.
+ * @param arg argument.
+ * @param ignite instance of Ignite.
+ *
+ * @throws Exception If failed.
+ */
+ private <T, R> void doTestNotManagementVisorTask(
+ Class<? extends ComputeTask<VisorTaskArgument<T>, R>> cls, T arg, IgniteEx ignite) throws Exception
+ {
+ final AtomicReference<TaskEvent> evt = new AtomicReference<>();
+
+ final CountDownLatch evtLatch = new CountDownLatch(1);
+
+ ignite.events().localListen(new IgnitePredicate<TaskEvent>() {
+ @Override public boolean apply(TaskEvent e) {
+ evt.set(e);
+
+ evtLatch.countDown();
+
+ return false;
+ }
+ }, EventType.EVT_MANAGEMENT_TASK_STARTED);
+
+ for (ClusterNode node : ignite.cluster().forServers().nodes())
+ ignite.compute().executeAsync(cls, new VisorTaskArgument<>(node.id(), arg, true));
+
+ assertFalse(evtLatch.await(10000, TimeUnit.MILLISECONDS));
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ff29b679/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java
index 2e5708d..2771864 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteComputeGridTestSuite.java
@@ -77,6 +77,7 @@ import org.apache.ignite.internal.IgniteExecutorServiceTest;
import org.apache.ignite.internal.IgniteExplicitImplicitDeploymentSelfTest;
import org.apache.ignite.internal.IgniteRoundRobinErrorAfterClientReconnectTest;
import org.apache.ignite.internal.TaskNodeRestartTest;
+import org.apache.ignite.internal.VisorManagementEventSelfTest;
import org.apache.ignite.internal.managers.checkpoint.GridCheckpointManagerSelfTest;
import org.apache.ignite.internal.managers.checkpoint.GridCheckpointTaskSelfTest;
import org.apache.ignite.internal.managers.communication.GridCommunicationManagerListenersSelfTest;
@@ -178,6 +179,8 @@ public class IgniteComputeGridTestSuite {
suite.addTestSuite(IgniteComputeJobOneThreadTest.class);
+ suite.addTestSuite(VisorManagementEventSelfTest.class);
+
return suite;
}
}