Repository: ignite Updated Branches: refs/heads/ignite-2.5 99feab6ac -> 526fb0ee6
IGNITE-8101 Ability to terminate system workers by JMX for test purposes. Signed-off-by: Andrey Gura <ag...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/526fb0ee Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/526fb0ee Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/526fb0ee Branch: refs/heads/ignite-2.5 Commit: 526fb0ee612ef71fde58a1274db35e8205304a63 Parents: 99feab6 Author: Dmitriy Sorokin <d.w.soro...@gmail.com> Authored: Tue Apr 10 22:20:41 2018 +0300 Committer: Andrey Gura <ag...@apache.org> Committed: Tue Apr 10 22:23:57 2018 +0300 ---------------------------------------------------------------------- .../apache/ignite/IgniteSystemProperties.java | 7 ++ .../failure/StopNodeOrHaltFailureHandler.java | 2 +- .../ignite/internal/GridKernalContext.java | 8 ++ .../ignite/internal/GridKernalContextImpl.java | 10 +++ .../apache/ignite/internal/IgniteKernal.java | 16 +++- .../discovery/GridDiscoveryManager.java | 2 +- .../GridCachePartitionExchangeManager.java | 3 +- .../cache/GridCacheSharedTtlCleanupManager.java | 3 +- .../wal/reader/StandaloneGridKernalContext.java | 6 ++ .../timeout/GridTimeoutProcessor.java | 3 +- .../ignite/internal/util/IgniteUtils.java | 7 +- .../worker/WorkersControlMXBeanImpl.java | 62 +++++++++++++++ .../ignite/internal/worker/WorkersRegistry.java | 80 ++++++++++++++++++++ .../ignite/internal/worker/package-info.java | 22 ++++++ .../ignite/mxbean/WorkersControlMXBean.java | 49 ++++++++++++ 15 files changed, 271 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java index 152d845..9da123e 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java @@ -423,6 +423,13 @@ public final class IgniteSystemProperties { public static final String IGNITE_MBEANS_DISABLED = "IGNITE_MBEANS_DISABLED"; /** + * If property is set to {@code true}, then test features will be enabled. + * + * Default is {@code false}. + */ + public static final String IGNITE_TEST_FEATURES_ENABLED = "IGNITE_TEST_FEATURES_ENABLED"; + + /** * Property controlling size of buffer holding last exception. Default value of {@code 1000}. */ public static final String IGNITE_EXCEPTION_REGISTRY_MAX_SIZE = "IGNITE_EXCEPTION_REGISTRY_MAX_SIZE"; http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/failure/StopNodeOrHaltFailureHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/failure/StopNodeOrHaltFailureHandler.java b/modules/core/src/main/java/org/apache/ignite/failure/StopNodeOrHaltFailureHandler.java index 4f74406..3ce4ff6 100644 --- a/modules/core/src/main/java/org/apache/ignite/failure/StopNodeOrHaltFailureHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/failure/StopNodeOrHaltFailureHandler.java @@ -92,7 +92,7 @@ public class StopNodeOrHaltFailureHandler implements FailureHandler { ).start(); } else { - U.error(log, "JVM will be halted immediately on ignite failure: [failureCtx=" + failureCtx + ']'); + U.error(log, "JVM will be halted immediately due to the failure: [failureCtx=" + failureCtx + ']'); Runtime.getRuntime().halt(Ignition.KILL_EXIT_CODE); } http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java index 0b40054..505c3d6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java @@ -32,6 +32,7 @@ import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager; import org.apache.ignite.internal.managers.failover.GridFailoverManager; import org.apache.ignite.internal.managers.indexing.GridIndexingManager; import org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager; +import org.apache.ignite.internal.worker.WorkersRegistry; import org.apache.ignite.internal.processors.affinity.GridAffinityProcessor; import org.apache.ignite.internal.processors.authentication.IgniteAuthenticationProcessor; import org.apache.ignite.internal.processors.cache.GridCacheProcessor; @@ -423,6 +424,13 @@ public interface GridKernalContext extends Iterable<GridComponent> { public GridIndexingManager indexing(); /** + * Gets workers registry. + * + * @return Workers registry. + */ + public WorkersRegistry workersRegistry(); + + /** * Gets data structures processor. * * @return Data structures processor. http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java index 3408334..ac49708 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java @@ -46,6 +46,7 @@ import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager; import org.apache.ignite.internal.managers.failover.GridFailoverManager; import org.apache.ignite.internal.managers.indexing.GridIndexingManager; import org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager; +import org.apache.ignite.internal.worker.WorkersRegistry; import org.apache.ignite.internal.processors.affinity.GridAffinityProcessor; import org.apache.ignite.internal.processors.authentication.IgniteAuthenticationProcessor; import org.apache.ignite.internal.processors.cache.CacheConflictResolutionManager; @@ -361,6 +362,10 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable private Map<String, Object> attrs = new HashMap<>(); /** */ + @GridToStringExclude + private final WorkersRegistry workersRegistry = new WorkersRegistry(); + + /** */ private IgniteEx grid; /** */ @@ -780,6 +785,11 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable } /** {@inheritDoc} */ + @Override public WorkersRegistry workersRegistry() { + return workersRegistry; + } + + /** {@inheritDoc} */ @Override public GridAffinityProcessor affinity() { return affProc; } http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java index 0b102e5..1cb07b9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java @@ -125,7 +125,6 @@ import org.apache.ignite.internal.processors.cache.GridCacheAdapter; import org.apache.ignite.internal.processors.cache.GridCacheContext; import org.apache.ignite.internal.processors.cache.GridCacheProcessor; import org.apache.ignite.internal.processors.cache.GridCacheUtilityKey; -import org.apache.ignite.internal.processors.cache.GridCacheUtils; import org.apache.ignite.internal.processors.cache.IgniteCacheProxy; import org.apache.ignite.internal.processors.cache.IgniteInternalCache; import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl; @@ -185,6 +184,8 @@ import org.apache.ignite.internal.util.typedef.internal.LT; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.SB; import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.worker.WorkersControlMXBeanImpl; +import org.apache.ignite.internal.worker.WorkersRegistry; import org.apache.ignite.lang.IgniteBiTuple; import org.apache.ignite.lang.IgniteFuture; import org.apache.ignite.lang.IgnitePredicate; @@ -197,6 +198,7 @@ import org.apache.ignite.marshaller.jdk.JdkMarshaller; import org.apache.ignite.mxbean.ClusterMetricsMXBean; import org.apache.ignite.mxbean.IgniteMXBean; import org.apache.ignite.mxbean.StripedExecutorMXBean; +import org.apache.ignite.mxbean.WorkersControlMXBean; import org.apache.ignite.mxbean.ThreadPoolMXBean; import org.apache.ignite.plugin.IgnitePlugin; import org.apache.ignite.plugin.PluginNotFoundException; @@ -1085,7 +1087,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { // Register MBeans. mBeansMgr.registerAllMBeans(utilityCachePool, execSvc, svcExecSvc, sysExecSvc, stripedExecSvc, p2pExecSvc, mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, restExecSvc, affExecSvc, idxExecSvc, callbackExecSvc, - qryExecSvc, schemaExecSvc, customExecSvcs); + qryExecSvc, schemaExecSvc, customExecSvcs, ctx.workersRegistry()); // Lifecycle bean notifications. notifyLifecycleBeans(AFTER_NODE_START); @@ -4175,7 +4177,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { IgniteStripedThreadPoolExecutor callbackExecSvc, ExecutorService qryExecSvc, ExecutorService schemaExecSvc, - @Nullable final Map<String, ? extends ExecutorService> customExecSvcs + @Nullable final Map<String, ? extends ExecutorService> customExecSvcs, + WorkersRegistry workersRegistry ) throws IgniteCheckedException { if (U.IGNITE_MBEANS_DISABLED) return; @@ -4221,6 +4224,13 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { for (Map.Entry<String, ? extends ExecutorService> entry : customExecSvcs.entrySet()) registerExecutorMBean(entry.getKey(), entry.getValue()); } + + if (U.IGNITE_TEST_FEATURES_ENABLED) { + WorkersControlMXBean workerCtrlMXBean = new WorkersControlMXBeanImpl(workersRegistry); + + registerMBean("Kernal", workerCtrlMXBean.getClass().getSimpleName(), + workerCtrlMXBean, WorkersControlMXBean.class); + } } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java index b0d3256..a1d84e5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java @@ -2591,7 +2591,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { * */ private DiscoveryWorker() { - super(ctx.igniteInstanceName(), "disco-event-worker", GridDiscoveryManager.this.log); + super(ctx.igniteInstanceName(), "disco-event-worker", GridDiscoveryManager.this.log, ctx.workersRegistry()); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java index e40493f..1a0e65f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java @@ -2077,7 +2077,8 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana * Constructor. */ private ExchangeWorker() { - super(cctx.igniteInstanceName(), "partition-exchanger", GridCachePartitionExchangeManager.this.log); + super(cctx.igniteInstanceName(), "partition-exchanger", GridCachePartitionExchangeManager.this.log, + cctx.kernalContext().workersRegistry()); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedTtlCleanupManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedTtlCleanupManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedTtlCleanupManager.java index 613e93b..7adabc3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedTtlCleanupManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedTtlCleanupManager.java @@ -121,7 +121,8 @@ public class GridCacheSharedTtlCleanupManager extends GridCacheSharedManagerAdap * Creates cleanup worker. */ CleanupWorker() { - super(cctx.igniteInstanceName(), "ttl-cleanup-worker", cctx.logger(GridCacheSharedTtlCleanupManager.class)); + super(cctx.igniteInstanceName(), "ttl-cleanup-worker", cctx.logger(GridCacheSharedTtlCleanupManager.class), + cctx.kernalContext().workersRegistry()); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java index 429a5ce..cb04575 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java @@ -86,6 +86,7 @@ import org.apache.ignite.internal.suggestions.GridPerformanceSuggestions; import org.apache.ignite.internal.util.IgniteExceptionRegistry; import org.apache.ignite.internal.util.StripedExecutor; import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.internal.worker.WorkersRegistry; import org.apache.ignite.marshaller.Marshaller; import org.apache.ignite.plugin.PluginNotFoundException; import org.apache.ignite.plugin.PluginProvider; @@ -454,6 +455,11 @@ public class StandaloneGridKernalContext implements GridKernalContext { } /** {@inheritDoc} */ + @Override public WorkersRegistry workersRegistry() { + return null; + } + + /** {@inheritDoc} */ @Override public DataStructuresProcessor dataStructures() { return null; } http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java index a09d6fa..25151cf 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/timeout/GridTimeoutProcessor.java @@ -145,7 +145,8 @@ public class GridTimeoutProcessor extends GridProcessorAdapter { * */ TimeoutWorker() { - super(ctx.config().getIgniteInstanceName(), "grid-timeout-worker", GridTimeoutProcessor.this.log); + super(ctx.config().getIgniteInstanceName(), "grid-timeout-worker", + GridTimeoutProcessor.this.log, ctx.workersRegistry()); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index 93f4fb4..42e96fb 100755 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -522,7 +522,12 @@ public abstract class IgniteUtils { }; /** Ignite MBeans disabled flag. */ - public static boolean IGNITE_MBEANS_DISABLED = IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_MBEANS_DISABLED); + public static boolean IGNITE_MBEANS_DISABLED = + IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_MBEANS_DISABLED); + + /** Ignite test features enabled flag. */ + public static boolean IGNITE_TEST_FEATURES_ENABLED = + IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_FEATURES_ENABLED); /** */ private static final boolean assertionsEnabled; http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/worker/WorkersControlMXBeanImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/worker/WorkersControlMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/worker/WorkersControlMXBeanImpl.java new file mode 100644 index 0000000..9e427e8 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/worker/WorkersControlMXBeanImpl.java @@ -0,0 +1,62 @@ +/* + * 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.worker; + +import java.util.ArrayList; +import java.util.List; +import org.apache.ignite.internal.util.worker.GridWorker; +import org.apache.ignite.mxbean.WorkersControlMXBean; + +/** + * MBean that provides control of system workersRegistry. + */ +public class WorkersControlMXBeanImpl implements WorkersControlMXBean { + /** System worker registry. */ + private final WorkersRegistry workerRegistry; + + /** + * Constructor. + * + * @param registry System worker registry. + */ + public WorkersControlMXBeanImpl(WorkersRegistry registry) { + workerRegistry = registry; + } + + /** {@inheritDoc} */ + @Override public List<String> getWorkerNames() { + return new ArrayList<>(workerRegistry.names()); + } + + /** {@inheritDoc} */ + @Override public boolean terminateWorker(String name) { + GridWorker w = workerRegistry.worker(name); + + if (w == null || w.isCancelled()) + return false; + + Thread t = w.runner(); + + if (t == null) + return false; + + t.interrupt(); + + return true; + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/worker/WorkersRegistry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/worker/WorkersRegistry.java b/modules/core/src/main/java/org/apache/ignite/internal/worker/WorkersRegistry.java new file mode 100644 index 0000000..e8d46fb --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/worker/WorkersRegistry.java @@ -0,0 +1,80 @@ +/* + * 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.worker; + +import java.util.Collection; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import org.apache.ignite.internal.util.worker.GridWorker; +import org.apache.ignite.internal.util.worker.GridWorkerListener; + +/** + * Workers registry. + */ +public class WorkersRegistry implements GridWorkerListener { + /** Registered workers. */ + private final ConcurrentMap<String, GridWorker> registeredWorkers = new ConcurrentHashMap<>(); + + /** + * Adds worker to the registry. + * + * @param w Worker. + */ + public void register(GridWorker w) { + if (registeredWorkers.putIfAbsent(w.name(), w) != null) + throw new IllegalStateException("Worker is already registered [worker=" + w + ']'); + } + + /** + * Removes worker from the registry. + * + * @param name Worker name. + */ + public void unregister(String name) { + registeredWorkers.remove(name); + } + + /** + * Returns names of all registered workers. + * + * @return Registered worker names. + */ + public Collection<String> names() { + return registeredWorkers.keySet(); + } + + /** + * Returns worker with given name. + * + * @param name Name. + * @return Registered {@link GridWorker} with name {@code name} or {@code null} if not found. + */ + public GridWorker worker(String name) { + return registeredWorkers.get(name); + } + + /** {@inheritDoc} */ + @Override public void onStarted(GridWorker w) { + register(w); + } + + /** {@inheritDoc} */ + @Override public void onStopped(GridWorker w) { + unregister(w.name()); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/internal/worker/package-info.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/worker/package-info.java b/modules/core/src/main/java/org/apache/ignite/internal/worker/package-info.java new file mode 100644 index 0000000..03ca621 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/worker/package-info.java @@ -0,0 +1,22 @@ +/* + * 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 description. --> + * System worker registry and control MBean implementation. + */ +package org.apache.ignite.internal.worker; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/526fb0ee/modules/core/src/main/java/org/apache/ignite/mxbean/WorkersControlMXBean.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/WorkersControlMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/WorkersControlMXBean.java new file mode 100644 index 0000000..0f5419b --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/mxbean/WorkersControlMXBean.java @@ -0,0 +1,49 @@ +/* + * 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.mxbean; + +import java.util.List; + +/** + * MBean that provides ability to terminate worker that registered in the workers registry. + */ +@MXBeanDescription("MBean that provides ability to terminate worker that registered in the workers registry.") +public interface WorkersControlMXBean { + /** + * Returns names of all registered workers. + * + * @return Worker names. + */ + @MXBeanDescription("Names of registered workers.") + public List<String> getWorkerNames(); + + /** + * Terminates worker. + * + * @param name Worker name. + * @return {@code True} if worker has been terminated successfully, {@code false} otherwise. + */ + @MXBeanDescription("Terminates worker.") + @MXBeanParametersNames( + "name" + ) + @MXBeanParametersDescriptions( + "Name of worker to terminate." + ) + public boolean terminateWorker(String name); +}