diff --git a/src/bftsmart/tom/server/defaultservices/DefaultRecoverable.java b/src/bftsmart/tom/server/defaultservices/DefaultRecoverable.java index 200df864d85ed8140f3d08ddd14cd7e7ca96abd5..dcfe7f40d88f006e1448f8f4d60ccb90706ceb1e 100644 --- a/src/bftsmart/tom/server/defaultservices/DefaultRecoverable.java +++ b/src/bftsmart/tom/server/defaultservices/DefaultRecoverable.java @@ -165,6 +165,7 @@ public abstract class DefaultRecoverable implements Recoverable, BatchExecutable } private StateLog getLog() { + initLog(); return log; } @@ -253,6 +254,7 @@ public abstract class DefaultRecoverable implements Recoverable, BatchExecutable stateLock.lock(); if (state.getSerializedState() != null) { System.out.println("The state is not null. Will install it"); + initLog(); log.update(state); installSnapshot(state.getSerializedState()); } @@ -369,10 +371,7 @@ public abstract class DefaultRecoverable implements Recoverable, BatchExecutable return index; } - @Override - public void setReplicaContext(ReplicaContext replicaContext) { - this.config = replicaContext.getStaticConfiguration(); - this.controller = replicaContext.getSVController(); + private void initLog() { if (log == null) { checkpointPeriod = config.getCheckpointPeriod(); byte[] state = getSnapshot(); @@ -392,6 +391,13 @@ public abstract class DefaultRecoverable implements Recoverable, BatchExecutable log = new StateLog(this.config.getProcessId(), checkpointPeriod, state, computeHash(state)); } } + } + + @Override + public void setReplicaContext(ReplicaContext replicaContext) { + this.config = replicaContext.getStaticConfiguration(); + this.controller = replicaContext.getSVController(); + initLog(); getStateManager().askCurrentConsensusId(); } diff --git a/src/bftsmart/tom/server/defaultservices/DefaultSingleRecoverable.java b/src/bftsmart/tom/server/defaultservices/DefaultSingleRecoverable.java index bdd283bd13a680413f1c26c1b70b43016eaa159d..6ff82014595e0ec46ccc61db5a509a02bfeb7834 100644 --- a/src/bftsmart/tom/server/defaultservices/DefaultSingleRecoverable.java +++ b/src/bftsmart/tom/server/defaultservices/DefaultSingleRecoverable.java @@ -116,8 +116,7 @@ public abstract class DefaultSingleRecoverable implements Recoverable, SingleExe } private StateLog getLog() { - if(log == null) - initLog(); + initLog(); return log; } @@ -193,8 +192,7 @@ public abstract class DefaultSingleRecoverable implements Recoverable, SingleExe System.out.println("(DefaultSingleRecoverable.setState) last CID in state: " + state.getLastCID()); logLock.lock(); - if(log == null) - initLog(); + initLog(); log.update(state); logLock.unlock(); @@ -280,7 +278,7 @@ public abstract class DefaultSingleRecoverable implements Recoverable, SingleExe return stateManager; } - protected void initLog() { + private void initLog() { if(log == null) { checkpointPeriod = config.getCheckpointPeriod(); byte[] state = getSnapshot();