X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FRaftActorDelegatingPersistentDataProvider.java;h=846ef22bb08c9cec938f02d9317f76684319188a;hb=67d8d3684dda352f957990c80c8e628dabcd0ca6;hp=2b9217e82822a5d394cc73218eaa78933e876b8a;hpb=8f7f6ed83f1ab21aa9ba1fb2f4f9fbad3a9bfa56;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java index 2b9217e828..846ef22bb0 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java @@ -13,7 +13,6 @@ import akka.japi.Procedure; import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.DelegatingPersistentDataProvider; import org.opendaylight.controller.cluster.PersistentDataProvider; -import org.opendaylight.controller.cluster.raft.messages.Payload; import org.opendaylight.controller.cluster.raft.messages.PersistentPayload; /** @@ -42,33 +41,19 @@ class RaftActorDelegatingPersistentDataProvider extends DelegatingPersistentData } private void doPersist(final T entry, final Procedure procedure, final boolean async) { - if (getDelegate().isRecoveryApplicable()) { - persistSuper(entry, procedure, async); - } else { - if (entry instanceof ReplicatedLogEntry) { - Payload payload = ((ReplicatedLogEntry)entry).getData(); - if (payload instanceof PersistentPayload) { - // We persist the Payload but not the ReplicatedLogEntry to avoid gaps in the journal indexes - // on recovery if data persistence is later enabled. - if (async) { - persistentProvider.persistAsync(payload, p -> procedure.apply(entry)); - } else { - persistentProvider.persist(payload, p -> procedure.apply(entry)); - } - } else { - persistSuper(entry, procedure, async); - } + if (!getDelegate().isRecoveryApplicable() && entry instanceof ReplicatedLogEntry replicatedLogEntry + && replicatedLogEntry.getData() instanceof PersistentPayload payload) { + // We persist the Payload but not the ReplicatedLogEntry to avoid gaps in the journal indexes on recovery + // if data persistence is later enabled. + if (async) { + persistentProvider.persistAsync(payload, p -> procedure.apply(entry)); } else { - persistSuper(entry, procedure, async); + persistentProvider.persist(payload, p -> procedure.apply(entry)); } - } - } - - private void persistSuper(final T object, final Procedure procedure, final boolean async) { - if (async) { - super.persistAsync(object, procedure); + } else if (async) { + super.persistAsync(entry, procedure); } else { - super.persist(object, procedure); + super.persist(entry, procedure); } } }