All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sleepycat.je.rep.NodeState Maven / Gradle / Ivy

The newest version!
/*-
 * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
 *
 * This file was distributed by Oracle as part of a version of Oracle Berkeley
 * DB Java Edition made available at:
 *
 * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
 *
 * Please see the LICENSE file included in the top-level directory of the
 * appropriate version of Oracle Berkeley DB Java Edition for a copy of the
 * license and additional information.
 */
package com.sleepycat.je.rep;

import com.sleepycat.je.JEVersion;
import com.sleepycat.je.rep.ReplicatedEnvironment.State;

/**
 * The current state of a replication node and the application this node is
 * running in.
 * 

* This includes the following information: *

    *
  • the replication {@link ReplicatedEnvironment.State state} of this * node
  • *
  • the name of the current master, as known by this node
  • *
  • the time when this node joined the replication group
  • *
  • the latest transaction end (abort or commit) VLSN on this node
  • *
  • the transaction end (abort or commit) VLSN on the master known by this * node. The difference between transaction end VLSNs on the master versus on * this node gives an indication of how current this node's data is. The gap * in VLSN values indicates the number of replication records that must be * processed by this node, to be caught up to the master.
  • *
  • the number of feeders running on this node
  • *
  • the system load average for the last minute
  • *
  • * The appState field is a byte array meant to hold information generated by * the JE HA application, as provided by a registered {@link com.sleepycat.je.rep.AppStateMonitor}. * Users are responsible for serializing and deserializing information for this * field.
  • *
* @since 5.0 */ public class NodeState { /* The name of the node requested. */ private final String nodeName; /* The name of the group which this node joins. */ private final String groupName; /* The current state of the node. */ private final State currentState; /* The name of the current master in the group. */ private final String masterName; /* The JEVersion this node runs on. */ private final JEVersion jeVersion; /* The time when this node last joined the group. */ private final long joinTime; /* The current transaction end VLSN on this node. */ private final long currentTxnEndVLSN; /* The master transaction end VLSN known by this node. */ private final long masterTxnEndVLSN; /* The number of active feeders that running on this node. */ private final int activeFeeders; /* The current log version of this node. */ private final int logVersion; /* The current application state. */ private final byte[] appState; /* The system load average for the last minute. */ private final double systemLoad; /** * @hidden * Internal use only. */ public NodeState(String nodeName, String groupName, State currentState, String masterName, JEVersion jeVersion, long joinTime, long currentTxnEndVLSN, long masterTxnEndVLSN, int activeFeeders, int logVersion, byte[] appState, double systemLoad) { this.nodeName = nodeName; this.groupName = groupName; this.currentState = currentState; this.masterName = masterName; this.jeVersion = jeVersion; this.joinTime = joinTime; this.currentTxnEndVLSN = currentTxnEndVLSN; this.masterTxnEndVLSN = masterTxnEndVLSN; this.activeFeeders = activeFeeders; this.logVersion = logVersion; this.appState = appState; this.systemLoad = systemLoad; } /** * Returns the name of the node whose state is requested. * * @return the name of the node. */ public String getNodeName() { return nodeName; } /** * Returns the name of the group which the node joins. * * @return name of the group which the node joins */ public String getGroupName() { return groupName; } /** * Returns the replication {@link ReplicatedEnvironment.State state} of * this node. * * @return the replication state of this node. */ public State getNodeState() { return currentState; } /** * Returns the name of the current * {@link State#MASTER master} known by this node. * * @return the name of the current master */ public String getMasterName() { return masterName; } /** * Returns the current JEVersion that this node runs on. * * @return the current JEVersion used by this node. */ public JEVersion getJEVersion() { return jeVersion; } /** * Returns the time when this node joins the replication group. * * @return the time when this node joins the group */ public long getJoinTime() { return joinTime; } /** * Returns the latest transaction end VLSN on this replication node. * * @return the commit VLSN on this node */ public long getCurrentTxnEndVLSN() { return currentTxnEndVLSN; } /** * Returns the transaction end VLSN on the master known by this node. * * @return the known commit VLSN on master */ public long getKnownMasterTxnEndVLSN() { return masterTxnEndVLSN; } /** * Returns the number of current active Feeders running on this node. * * @return the number of running Feeders on the node */ public int getActiveFeeders() { return activeFeeders; } /** * Returns the log version of this node. * * @return the log version of this node. */ public int getLogVersion() { return logVersion; } /** * Returns the application state which is obtained via * {@link AppStateMonitor#getAppState}. * * @return the application state */ public byte[] getAppState() { return appState; } /** * Returns the system load average for the last minute. * * @return the system average load, -1.0 if the node is running on jdk5 or * exceptions thrown while getting this information. */ public double getSystemLoad() { return systemLoad; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Current state of node: " + nodeName + " from group: " + groupName + "\n"); sb.append(" Current state: " + currentState + "\n"); sb.append(" Current master: " + masterName + "\n"); sb.append(" Current JE version: " + jeVersion + "\n"); sb.append(" Current log version: " + logVersion + "\n"); sb.append(" Current transaction end (abort or commit) VLSN: " + currentTxnEndVLSN + "\n"); sb.append(" Current master transaction end (abort or commit) VLSN: " + masterTxnEndVLSN + "\n"); sb.append(" Current active feeders on node: " + activeFeeders + "\n"); sb.append(" Current system load average: " + systemLoad + "\n"); return sb.toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy