in ratis-logservice/src/main/java/org/apache/ratis/logservice/server/LogStateMachine.java [192:213]
public long takeSnapshot() {
final TermIndex last;
try(AutoCloseableLock readLock = readLock()) {
last = getLastAppliedTermIndex();
}
final File snapshotFile = storage.getSnapshotFile(last.getTerm(), last.getIndex());
LOG.info("Taking a snapshot to file {}", snapshotFile);
try(AutoCloseableLock readLock = readLock();
ObjectOutputStream out = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(snapshotFile)))) {
out.writeLong(length);
out.writeLong(dataRecordsSize);
out.writeObject(state);
} catch(IOException ioe) {
LOG.warn("Failed to write snapshot file \"" + snapshotFile
+ "\", last applied index=" + last);
}
return last.getIndex();
}