package com.sleepycat.je.recovery;
import com.sleepycat.je.EnvironmentStats;
import com.sleepycat.je.StatsConfig;
public class Checkpointer {
private int nCheckpoints;
private long lastCheckpointStart;
private int nFullINFlush;
private int nFullBINFlush;
private int nDeltaINFlush;
private int nFullINFlushThisRun;
private int nDeltaINFlushThisRun;
/**
* Load stats.
*/
public void loadStats( StatsConfig config, EnvironmentStats stat) throws DatabaseException {
stat.setNCheckpoints(nCheckpoints);
stat.setLastCheckpointStart(lastCheckpointStart);
stat.setLastCheckpointEnd(lastCheckpointEnd);
stat.setLastCheckpointId(checkpointId);
stat.setNFullINFlush(nFullINFlush);
stat.setNFullBINFlush(nFullBINFlush);
stat.setNDeltaINFlush(nDeltaINFlush);
if (config.getClear()) {
nCheckpoints=0;
nFullINFlush=0;
nFullBINFlush=0;
nDeltaINFlush=0;
}
}
/**
* Reset per-run counters.
*/
private void resetPerRunCounters(){
nFullINFlushThisRun=0;
nDeltaINFlushThisRun=0;
}
protected void hook531() throws DatabaseException {
nCheckpoints=0;
original();
}
protected void hook532() throws DatabaseException {
nFullINFlushThisRun++;
nFullINFlush++;
original();
}
protected void hook533( IN target) throws DatabaseException {
nFullINFlushThisRun++;
nFullINFlush++;
if (target instanceof BIN) {
nFullBINFlush++;
}
original(target);
}
protected void hook537() throws DatabaseException {
nDeltaINFlushThisRun++;
nDeltaINFlush++;
original();
}
@MethodObject static class Checkpointer_doCheckpoint {
protected void hook534() throws DatabaseException {
_this.nCheckpoints++;
original();
}
protected void hook535() throws DatabaseException {
_this.resetPerRunCounters();
original();
}
protected void hook536() throws DatabaseException {
_this.lastCheckpointStart=checkpointStart;
original();
}
}
}