X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FShardRecoveryCoordinator.java;h=aeaad4880614445d4d708353c8644c1233a4e83d;hb=2a6aa1775604906755883f810ee9ea6d5f286135;hp=6e5886132a26d098262f9ee7a073130bb38962b6;hpb=90735c91ce3390a731afc446b4e7314c544ab9d6;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinator.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinator.java index 6e5886132a..aeaad48806 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinator.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinator.java @@ -7,7 +7,9 @@ */ package org.opendaylight.controller.cluster.datastore; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkState; +import static java.util.Objects.requireNonNull; + import java.io.File; import org.opendaylight.controller.cluster.datastore.persisted.ShardDataTreeSnapshot; import org.opendaylight.controller.cluster.datastore.persisted.ShardSnapshotState; @@ -27,21 +29,51 @@ import org.slf4j.Logger; * * @author Thomas Pantelis */ -class ShardRecoveryCoordinator implements RaftActorRecoveryCohort { +abstract class ShardRecoveryCoordinator implements RaftActorRecoveryCohort { + private static final class Simple extends ShardRecoveryCoordinator { + Simple(final ShardDataTree store, final String shardName, final Logger log) { + super(store, shardName, log); + } + + @Override + public Snapshot getRestoreFromSnapshot() { + return null; + } + } + + private static final class WithSnapshot extends ShardRecoveryCoordinator { + private final Snapshot restoreFromSnapshot; + + WithSnapshot(final ShardDataTree store, final String shardName, final Logger log, final Snapshot snapshot) { + super(store, shardName, log); + this.restoreFromSnapshot = requireNonNull(snapshot); + } + + @Override + public Snapshot getRestoreFromSnapshot() { + return restoreFromSnapshot; + } + } + private final ShardDataTree store; private final String shardName; private final Logger log; - private final Snapshot restoreFromSnapshot; private boolean open; - ShardRecoveryCoordinator(final ShardDataTree store, final Snapshot restoreFromSnapshot, final String shardName, - final Logger log) { - this.store = Preconditions.checkNotNull(store); - this.shardName = Preconditions.checkNotNull(shardName); - this.log = Preconditions.checkNotNull(log); + ShardRecoveryCoordinator(final ShardDataTree store, final String shardName, final Logger log) { + this.store = requireNonNull(store); + this.shardName = requireNonNull(shardName); + this.log = requireNonNull(log); + } - this.restoreFromSnapshot = restoreFromSnapshot; + static ShardRecoveryCoordinator create(final ShardDataTree store, final String shardName, final Logger log) { + return new Simple(store, shardName, log); + } + + static ShardRecoveryCoordinator forSnapshot(final ShardDataTree store, final String shardName, final Logger log, + final Snapshot snapshot) { + return new WithSnapshot(store, shardName, log, snapshot); } @Override @@ -53,7 +85,7 @@ class ShardRecoveryCoordinator implements RaftActorRecoveryCohort { @Override @SuppressWarnings("checkstyle:IllegalCatch") public void appendRecoveredLogEntry(final Payload payload) { - Preconditions.checkState(open, "call startLogRecovery before calling appendRecoveredLogEntry"); + checkState(open, "call startLogRecovery before calling appendRecoveredLogEntry"); try { store.applyRecoveryPayload(payload); @@ -69,7 +101,7 @@ class ShardRecoveryCoordinator implements RaftActorRecoveryCohort { */ @Override public void applyCurrentLogRecoveryBatch() { - Preconditions.checkState(open, "call startLogRecovery before calling applyCurrentLogRecoveryBatch"); + checkState(open, "call startLogRecovery before calling applyCurrentLogRecoveryBatch"); open = false; } @@ -89,7 +121,7 @@ class ShardRecoveryCoordinator implements RaftActorRecoveryCohort { @SuppressWarnings("checkstyle:IllegalCatch") public void applyRecoverySnapshot(final Snapshot.State snapshotState) { if (!(snapshotState instanceof ShardSnapshotState)) { - log.debug("{}: applyRecoverySnapshot ignoring snapshot: {}", snapshotState); + log.debug("{}: applyRecoverySnapshot ignoring snapshot: {}", shardName, snapshotState); } log.debug("{}: Applying recovered snapshot", shardName); @@ -104,9 +136,4 @@ class ShardRecoveryCoordinator implements RaftActorRecoveryCohort { shardName, shardSnapshot, f), e); } } - - @Override - public Snapshot getRestoreFromSnapshot() { - return restoreFromSnapshot; - } }