@Override public void setReplicaContext(ReplicaContext replicaContext) { this.config = replicaContext.getStaticConfiguration(); if (log == null) { globalCheckpointPeriod = config.getGlobalCheckpointPeriod(); replicaCkpIndex = getCheckpointPortionIndex(); checkpointPortion = globalCheckpointPeriod / config.getN(); // byte[] state = getSnapshot(); if (config.isToLog()) { int replicaId = config.getProcessId(); boolean isToLog = config.isToLog(); boolean syncLog = config.isToWriteSyncLog(); boolean syncCkp = config.isToWriteSyncCkp(); // log = new DurableStateLog(replicaId, state, computeHash(state), isToLog, syncLog, // syncCkp); log = new DurableStateLog(replicaId, null, null, isToLog, syncLog, syncCkp); CSTState storedState = log.loadDurableState(); if (storedState.getLastCID() > -1) { System.out.println("LAST CID RECOVERED FROM LOG: " + storedState.getLastCID()); setState(storedState); getStateManager().setLastCID(storedState.getLastCID()); } else { System.out.println("REPLICA IS IN INITIAL STATE"); } } getStateManager().askCurrentConsensusId(); } }
private int getCheckpointPortionIndex() { int numberOfReplicas = config.getN(); int ckpIndex = ((globalCheckpointPeriod / numberOfReplicas) * (config.getProcessId() + 1)) - 1; return ckpIndex; }