/*
* 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;
import java.util.UUID;
import javax.management.JMException;
/**
* This interface defines JMX view on kernal.
*/
@MXBeanDescription("MBean that provides access to Kernal information.")
public interface IgniteMXBean {
/**
* Gets string presentation of the version.
*
* @return String presentation of the version.
*/
@MXBeanDescription("String presentation of the Ignite version.")
public String getFullVersion();
/**
* Gets copyright statement for Ignite product.
*
* @return Copyright statement for Ignite product.
*/
@MXBeanDescription("Copyright statement for Ignite product.")
public String getCopyright();
/**
* Gets string presentation of the kernal start timestamp.
*
* @return String presentation of the kernal start timestamp.
*/
@MXBeanDescription("String presentation of the kernal start timestamp.")
public String getStartTimestampFormatted();
/**
* Gets string presentation of up-time for the kernal.
*
* @return String presentation of up-time for the kernal.
*/
@MXBeanDescription("String presentation of up-time for the kernal.")
public String getUpTimeFormatted();
/**
* Get start timestamp of the kernal.
*
* @return Start timestamp of the kernal.
*/
@MXBeanDescription("Start timestamp of the kernal.")
public long getStartTimestamp();
/**
* Gets up-time of the kernal.
*
* @return Up-time of the kernal.
*/
@MXBeanDescription("Up-time of the kernal.")
public long getUpTime();
/**
* Gets a list of formatted user-defined attributes added to this node.
* <p>
* Note that grid will add all System properties and environment properties
* to grid node attributes also. SPIs may also add node attributes that are
* used for SPI implementation.
*
* @return User defined attributes for this node.
*/
@MXBeanDescription("Collection of formatted user-defined attributes added to this node.")
public List<String> getUserAttributesFormatted();
/**
* Gets a formatted instance of logger that is in grid.
*
* @return Logger that is used in grid.
*/
@MXBeanDescription("Formatted instance of logger that is in grid.")
public String getGridLoggerFormatted();
/**
* Gets a formatted instance of fully configured thread pool that is used in grid.
*
* @return Thread pool implementation that is used in grid.
*/
@MXBeanDescription("Formatted instance of fully configured thread pool that is used in grid.")
public String getExecutorServiceFormatted();
/**
* Gets Ignite installation home folder.
*
* @return Ignite installation home.
*/
@MXBeanDescription("Ignite installation home folder.")
public String getIgniteHome();
/**
* Gets a formatted instance of MBean server instance.
*
* @return MBean server instance.
*/
@MXBeanDescription("Formatted instance of MBean server instance.")
public String getMBeanServerFormatted();
/**
* Unique identifier for this node within grid.
*
* @return Unique identifier for this node within grid.
*/
@MXBeanDescription("Unique identifier for this node within grid.")
public UUID getLocalNodeId();
/**
* Returns {@code true} if peer class loading is enabled, {@code false}
* otherwise. Default value is {@code true}.
* <p>
* When peer class loading is enabled and task is not deployed on local node,
* local node will try to load classes from the node that initiated task
* execution. This way, a task can be physically deployed only on one node
* and then internally penetrate to all other nodes.
*
* @return {@code true} if peer class loading is enabled, {@code false}
* otherwise.
*/
@MXBeanDescription("Whether or not peer class loading (a.k.a. P2P class loading) is enabled.")
public boolean isPeerClassLoadingEnabled();
/**
* Gets {@code toString()} representation of of lifecycle beans configured
* with Ignite.
*
* @return {@code toString()} representation of all lifecycle beans configured
* with Ignite.
*/
@MXBeanDescription("String representation of lifecycle beans.")
public List<String> getLifecycleBeansFormatted();
/**
* This method allows manually remove the checkpoint with given {@code key}.
*
* @param key Checkpoint key.
* @return {@code true} if specified checkpoint was indeed removed, {@code false}
* otherwise.
*/
@MXBeanDescription("This method allows manually remove the checkpoint with given key. Return true " +
"if specified checkpoint was indeed removed, false otherwise.")
@MXBeanParametersNames(
"key"
)
@MXBeanParametersDescriptions(
"Checkpoint key to remove."
)
public boolean removeCheckpoint(String key);
/**
* Pings node with given node ID to see whether it is alive.
*
* @param nodeId String presentation of node ID. See {@link UUID#fromString(String)} for
* details on string formatting.
* @return Whether or not node is alive.
*/
@MXBeanDescription("Pings node with given node ID to see whether it is alive. " +
"Returns whether or not node is alive.")
@MXBeanParametersNames(
"nodeId"
)
@MXBeanParametersDescriptions(
"String presentation of node ID. See java.util.UUID class for details."
)
public boolean pingNode(String nodeId);
/**
* @param active Activate/DeActivate flag.
*/
@MXBeanDescription(
"Execute activate or deactivate process."
)
@MXBeanParametersNames(
"active"
)
public void active(boolean active);
/**
* Checks if Ignite grid is active. If Ignite grid is not active return {@code False}.
*
* @return {@code True} if grid is active. {@code False} If grid is not active.
*/
@MXBeanDescription(
"Checks Ignite grid is active or is not active."
)
public boolean active();
/**
* Makes the best attempt to undeploy a task from the whole grid. Note that this
* method returns immediately and does not wait until the task will actually be
* undeployed on every node.
* <p>
* Note that Ignite maintains internal versions for grid tasks in case of redeployment.
* This method will attempt to undeploy all versions on the grid task with
* given name.
*
* @param taskName Name of the task to undeploy. If task class has {@link org.apache.ignite.compute.ComputeTaskName} annotation,
* then task was deployed under a name specified within annotation. Otherwise, full
* class name should be used as task's name.
* @throws JMException Thrown if undeploy failed.
*/
@MXBeanDescription("Makes the best attempt to undeploy a task from the whole grid.")
@MXBeanParametersNames(
"taskName"
)
@MXBeanParametersDescriptions(
"Name of the task to undeploy."
)
public void undeployTaskFromGrid(String taskName) throws JMException;
/**
* A shortcut method that executes given task assuming single {@code java.lang.String} argument
* and {@code java.lang.String} return type.
*
* @param taskName Name of the task to execute.
* @param arg Single task execution argument (can be {@code null}).
* @return Task return value (assumed of {@code java.lang.String} type).
* @throws JMException Thrown in case when execution failed.
*/
@MXBeanDescription("A shortcut method that executes given task assuming single " +
"String argument and String return type. Returns Task return value (assumed of String type).")
@MXBeanParametersNames(
{
"taskName",
"arg"
}
)
@MXBeanParametersDescriptions(
{
"Name of the task to execute.",
"Single task execution argument (can be null)."
}
)
public String executeTask(String taskName, String arg) throws JMException;
/**
* Pings node with given host name to see if it is alive.
*
* @param host Host name or IP address of the node to ping.
* @return Whether or not node is alive.
*/
@MXBeanDescription("Pings node with given host name to see if it is alive. " +
"Returns whether or not node is alive.")
@MXBeanParametersNames(
"host"
)
@MXBeanParametersDescriptions(
"Host name or IP address of the node to ping."
)
public boolean pingNodeByAddress(String host);
/**
* Gets a formatted instance of configured discovery SPI implementation.
*
* @return Grid discovery SPI implementation.
*/
@MXBeanDescription("Formatted instance of configured discovery SPI implementation.")
public String getDiscoverySpiFormatted();
/**
* Gets a formatted instance of fully configured SPI communication implementation.
*
* @return Grid communication SPI implementation.
*/
@MXBeanDescription("Formatted instance of fully configured SPI communication implementation.")
public String getCommunicationSpiFormatted();
/**
* Gets a formatted instance of fully configured deployment SPI implementation.
*
* @return Grid deployment SPI implementation.
*/
@MXBeanDescription("Formatted instance of fully configured deployment SPI implementation.")
public String getDeploymentSpiFormatted();
/**
* Gets a formatted instance of configured checkpoint SPI implementation.
*
* @return Grid checkpoint SPI implementation.
*/
@MXBeanDescription("Formatted instance of configured checkpoint SPI implementation.")
public String getCheckpointSpiFormatted();
/**
* Gets a formatted instance of configured collision SPI implementations.
*
* @return Grid collision SPI implementations.
*/
@MXBeanDescription("Formatted instance of configured collision SPI implementations.")
public String getCollisionSpiFormatted();
/**
* Gets a formatted instance of fully configured event SPI implementation.
*
* @return Grid event SPI implementation.
*/
@MXBeanDescription("Formatted instance of fully configured event SPI implementation.")
public String getEventStorageSpiFormatted();
/**
* Gets a formatted instance of fully configured failover SPI implementations.
*
* @return Grid failover SPI implementations.
*/
@MXBeanDescription("Formatted instance of fully configured failover SPI implementations.")
public String getFailoverSpiFormatted();
/**
* Gets a formatted instance of fully configured load balancing SPI implementations.
*
* @return Grid load balancing SPI implementations.
*/
@MXBeanDescription("Formatted instance of fully configured load balancing SPI implementations.")
public String getLoadBalancingSpiFormatted();
/**
* Gets OS information.
*
* @return OS information.
*/
@MXBeanDescription("OS information.")
public String getOsInformation();
/**
* Gets JDK information.
*
* @return JDK information.
*/
@MXBeanDescription("JDK information.")
public String getJdkInformation();
/**
* Gets OS user.
*
* @return OS user name.
*/
@MXBeanDescription("OS user name.")
public String getOsUser();
/**
* Gets VM name.
*
* @return VM name.
*/
@MXBeanDescription("VM name.")
public String getVmName();
/**
* Gets optional kernal instance name. It can be {@code null}.
*
* @return Optional kernal instance name.
*/
@MXBeanDescription("Optional kernal instance name.")
public String getInstanceName();
/**
* Prints errors.
*/
@MXBeanDescription("Prints last suppressed errors.")
public void printLastErrors();
/**
* Dumps debug information for the current node.
*/
@MXBeanDescription("Dumps debug information for the current node.")
public void dumpDebugInfo();
}