}
@Override
- public void commit(final long sequenceNumber) {
- currentState.commit(sequenceNumber);
+ public void commit(final long sequenceNumber, long timeStamp) {
+ currentState.commit(sequenceNumber, timeStamp);
}
@Override
}
@Override
- public void commit(final long sequenceNumber) {
+ public void commit(final long sequenceNumber, long timeStamp) {
LOG.debug("commit should not be called in state {}", this);
}
private class Persisting extends AbstractSnapshotState {
@Override
- public void commit(final long sequenceNumber) {
+ public void commit(final long sequenceNumber, long timeStamp) {
LOG.debug("{}: Snapshot success - sequence number: {}", persistenceId(), sequenceNumber);
if(applySnapshot != null) {
context.setCommitIndex(snapshot.getLastAppliedIndex());
context.getTermInformation().update(snapshot.getElectionTerm(), snapshot.getElectionVotedFor());
+ if(snapshot.getServerConfiguration() != null) {
+ context.updatePeerIds(snapshot.getServerConfiguration());
+ }
+
if(snapshot.getState().length > 0 ) {
applySnapshotProcedure.accept(snapshot.getState());
}
context.getReplicatedLog().snapshotCommit();
}
- context.getPersistenceProvider().deleteSnapshots(new SnapshotSelectionCriteria(
- sequenceNumber - context.getConfigParams().getSnapshotBatchCount(), Long.MAX_VALUE, 0L, 0L));
+ context.getPersistenceProvider().deleteSnapshots(new SnapshotSelectionCriteria(sequenceNumber,
+ timeStamp - 1, 0L, 0L));
context.getPersistenceProvider().deleteMessages(lastSequenceNumber);