blob: 48ff204d91ec03807af9dff04043096bc7c8aef4 [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.cleaner;
import java.nio.ByteBuffer;
import com.sleepycat.je.EnvironmentFailureException;
import com.sleepycat.je.log.LogUtils;
import com.sleepycat.je.log.Loggable;
/**
* Per-DB-per-file utilization counters. The DatabaseImpl stores a persistent
* map of file number to DbFileSummary.
*/
public class DbFileSummary implements Loggable, Cloneable {
/* Persistent fields. */
public int totalINCount; // Number of IN log entries
public int totalINSize; // Byte size of IN log entries
public int totalLNCount; // Number of LN log entries
public int totalLNSize; // Byte size of LN log entries
public int obsoleteINCount; // Number of obsolete IN log entries
public int obsoleteLNCount; // Number of obsolete LN log entries
public int obsoleteLNSize; // Byte size of obsolete LN log entries
public int obsoleteLNSizeCounted; // Number obsolete LNs with size counted
/**
* Creates an empty summary.
*/
public DbFileSummary() {
}
/**
* @see Loggable#getLogSize
*/
public int getLogSize() {
throw EnvironmentFailureException.unexpectedState();
}
/**
* @see Loggable#writeToLog
*/
public void writeToLog(ByteBuffer buf) {
throw EnvironmentFailureException.unexpectedState();
}
/**
* @see Loggable#readFromLog
*/
public void readFromLog(ByteBuffer buf, int entryTypeVersion) {
totalINCount = LogUtils.readPackedInt(buf);
totalINSize = LogUtils.readPackedInt(buf);
totalLNCount = LogUtils.readPackedInt(buf);
totalLNSize = LogUtils.readPackedInt(buf);
obsoleteINCount = LogUtils.readPackedInt(buf);
obsoleteLNCount = LogUtils.readPackedInt(buf);
obsoleteLNSize = LogUtils.readPackedInt(buf);
obsoleteLNSizeCounted = LogUtils.readPackedInt(buf);
}
/**
* @see Loggable#dumpLog
*/
public void dumpLog(StringBuilder buf, boolean verbose) {
buf.append("<summary totalINCount=\"");
buf.append(totalINCount);
buf.append("\" totalINSize=\"");
buf.append(totalINSize);
buf.append("\" totalLNCount=\"");
buf.append(totalLNCount);
buf.append("\" totalLNSize=\"");
buf.append(totalLNSize);
buf.append("\" obsoleteINCount=\"");
buf.append(obsoleteINCount);
buf.append("\" obsoleteLNCount=\"");
buf.append(obsoleteLNCount);
buf.append("\" obsoleteLNSize=\"");
buf.append(obsoleteLNSize);
buf.append("\" obsoleteLNSizeCounted=\"");
buf.append(obsoleteLNSizeCounted);
buf.append("\"/>");
}
/**
* Never called.
* @see Loggable#getTransactionId
*/
public long getTransactionId() {
return 0;
}
/**
* @see Loggable#logicalEquals
* Always return false, this item should never be compared.
*/
public boolean logicalEquals(Loggable other) {
return false;
}
@Override
public DbFileSummary clone() {
try {
return (DbFileSummary) super.clone();
} catch (CloneNotSupportedException e) {
/* Should never happen. */
throw new IllegalStateException(e);
}
}
@Override
public String toString() {
StringBuilder buf = new StringBuilder();
dumpLog(buf, true);
return buf.toString();
}
}