Example usage for org.apache.cassandra.service StorageServiceMBean getOwnership

List of usage examples for org.apache.cassandra.service StorageServiceMBean getOwnership

Introduction

In this page you can find the example usage for org.apache.cassandra.service StorageServiceMBean getOwnership.

Prototype

@Deprecated
public Map<InetAddress, Float> getOwnership();

Source Link

Document

given a list of tokens (representing the nodes in the cluster), returns a mapping from "token -> %age of cluster owned by that token"

Usage

From source file:org.wso2.carbon.cassandra.mgt.CassandraClusterAdmin.java

License:Apache License

/**
 * Get information about all the nodes in a cluster
 *
 * @return an array of <code>NodeInformation</code>
 * @throws CassandraServerManagementException
 *          for errors during accessing nodes
 *//*from   w  ww.j  a v  a2 s. c o m*/
public NodeInformation[] getNodes() throws CassandraServerManagementException {
    StorageServiceMBean ssMBean = null;
    try {
        ssMBean = CassandraAdminDataHolder.getInstance().getCassandraMBeanLocator().locateStorageServiceMBean();
    } catch (CassandraServerManagementException e) {
        handleException("Error occurred while retrieving node information list", e);
    }

    if (ssMBean == null) {
        handleException("Storage Server MBean is null");
    }

    Map<String, String> tokenToEndpoint = ssMBean.getTokenToEndpointMap();
    List<String> sortedTokens = new ArrayList<String>(tokenToEndpoint.keySet());
    Collections.sort(sortedTokens);

    /* Calculate per-token ownership of the ring */
    Map<InetAddress, Float> ownerships = ssMBean.getOwnership();

    List<NodeInformation> nodeInfoList = new ArrayList<NodeInformation>();
    for (String token : sortedTokens) {
        String primaryEndpoint = tokenToEndpoint.get(token);
        String status = ssMBean.getLiveNodes().contains(primaryEndpoint)
                ? CassandraManagementConstants.NodeStatuses.NODE_STATUS_UP
                : ssMBean.getUnreachableNodes().contains(primaryEndpoint)
                        ? CassandraManagementConstants.NodeStatuses.NODE_STATUS_DOWN
                        : CassandraManagementConstants.NodeStatuses.NODE_STATUS_UNKNOWN;

        String state = ssMBean.getJoiningNodes().contains(primaryEndpoint)
                ? CassandraManagementConstants.NodeStatuses.NODE_STATUS_JOINING
                : ssMBean.getLeavingNodes().contains(primaryEndpoint)
                        ? CassandraManagementConstants.NodeStatuses.NODE_STATUS_LEAVING
                        : CassandraManagementConstants.NodeStatuses.NODE_STATUS_NORMAL;

        Map<String, String> loadMap = ssMBean.getLoadMap();
        String load = loadMap.containsKey(primaryEndpoint) ? loadMap.get(primaryEndpoint)
                : CassandraManagementConstants.NodeStatuses.NODE_STATUS_UNKNOWN;

        Float ownership = ownerships.get(token);
        String owns = "N/A";
        if (ownership != null) {
            owns = new DecimalFormat("##0.00%").format(ownership);
        }
        NodeInformation nodeInfo = new NodeInformation();
        nodeInfo.setAddress(primaryEndpoint);
        nodeInfo.setState(state);
        nodeInfo.setStatus(status);
        nodeInfo.setOwn(owns);
        nodeInfo.setLoad(load);
        nodeInfo.setToken(token);
        nodeInfoList.add(nodeInfo);
    }
    return nodeInfoList.toArray(new NodeInformation[nodeInfoList.size()]);
}