Repository: ignite Updated Branches: refs/heads/master 0d7535340 -> ff29b6791
IGNITE-9881 Added events for management tasks - Fixes #5006. Signed-off-by: Alexey Goncharuk <alexey.goncha...@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 <aealexsand...@gmail.com> Authored: Wed Oct 24 12:39:19 2018 +0300 Committer: Alexey Goncharuk <alexey.goncha...@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; } }