blob: c34cc1d321b8dff598c09d82546214c9b4e2f7ef [file] [log] [blame]
/*-
* 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;
import static com.sleepycat.je.dbi.TxnStatDefinition.TXN_ABORTS;
import static com.sleepycat.je.dbi.TxnStatDefinition.TXN_ACTIVE;
import static com.sleepycat.je.dbi.TxnStatDefinition.TXN_ACTIVE_TXNS;
import static com.sleepycat.je.dbi.TxnStatDefinition.TXN_BEGINS;
import static com.sleepycat.je.dbi.TxnStatDefinition.TXN_COMMITS;
import static com.sleepycat.je.dbi.TxnStatDefinition.TXN_XAABORTS;
import static com.sleepycat.je.dbi.TxnStatDefinition.TXN_XACOMMITS;
import static com.sleepycat.je.dbi.TxnStatDefinition.TXN_XAPREPARES;
import java.io.Serializable;
import com.sleepycat.je.utilint.StatGroup;
/**
* Transaction statistics for a database environment.
*/
public class TransactionStats implements Serializable {
private static final long serialVersionUID = 2136955031L;
private StatGroup stats;
/**
* @hidden
* Internal use only.
*/
public TransactionStats(StatGroup stats) {
this.stats = stats;
}
/**
* The Active class represents an active transaction.
*/
public static class Active implements Serializable {
private static final long serialVersionUID = 1286693589L;
/**
* The transaction ID of the transaction.
*/
private long txnId;
/**
* The transaction ID of the parent transaction (or 0, if no parent).
*/
private long parentId;
/**
* The transaction name, including the thread name if available.
*/
private String name;
/**
* The transaction ID of the transaction.
*/
public long getId() {
return txnId;
}
/**
* The transaction ID of the parent transaction (or 0, if no parent).
*/
public long getParentId() {
return parentId;
}
/**
* The transaction name, including the thread name if available.
*/
public String getName() {
return name;
}
/**
* @hidden
* Internal use only.
*/
public Active(String name, long txnId, long parentId) {
this.name = name;
this.txnId = txnId;
this.parentId = parentId;
}
@Override
public String toString() {
return "txnId = " + txnId + " txnName = " + name;
}
}
/**
* Return the array of active transactions.
*
* @return The array of active transactions.
*/
public Active[] getActiveTxns() {
return stats.getActiveTxnArray(TXN_ACTIVE_TXNS);
}
/**
* The number of transactions that have aborted.
*/
public long getNAborts() {
return stats.getLong(TXN_ABORTS);
}
/**
* The number of XA transactions that have aborted.
*/
public long getNXAAborts() {
return stats.getLong(TXN_XAABORTS);
}
/**
* The number of XA transactions that have been prepared.
*/
public long getNXAPrepares() {
return stats.getLong(TXN_XAPREPARES);
}
/**
* The number of transactions that are currently active.
*/
public int getNActive() {
return stats.getInt(TXN_ACTIVE);
}
/**
* The number of transactions that have begun.
*/
public long getNBegins() {
return stats.getLong(TXN_BEGINS);
}
/**
* The number of transactions that have committed.
*/
public long getNCommits() {
return stats.getLong(TXN_COMMITS);
}
/**
* The number of XA transactions that have committed.
*/
public long getNXACommits() {
return stats.getLong(TXN_XACOMMITS);
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return stats.toString();
}
public String toStringVerbose() {
return stats.toStringVerbose();
}
}