X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2FNonPersistentDataProvider.java;h=9a4a34cf596d00dbf1d1eca8dd1973b88f3d236d;hb=78aefba8c580123d0763b483fab81d2a993e32eb;hp=d1af58f18b426c19d7c70ef0d0a44734948e4b72;hpb=8bc849448610deeb047111986bf1a14be29a894e;p=controller.git diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java index d1af58f18b..9a4a34cf59 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java @@ -7,8 +7,11 @@ */ package org.opendaylight.controller.cluster; +import static java.util.Objects.requireNonNull; + import akka.japi.Procedure; import akka.persistence.SnapshotSelectionCriteria; +import org.opendaylight.controller.cluster.common.actor.ExecuteInSelfActor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,34 +21,53 @@ import org.slf4j.LoggerFactory; public class NonPersistentDataProvider implements DataPersistenceProvider { private static final Logger LOG = LoggerFactory.getLogger(NonPersistentDataProvider.class); + private final ExecuteInSelfActor actor; + + public NonPersistentDataProvider(final ExecuteInSelfActor actor) { + this.actor = requireNonNull(actor); + } + @Override public boolean isRecoveryApplicable() { return false; } @Override - public void persist(T o, Procedure procedure) { - try { - procedure.apply(o); - } catch (Exception e) { - LOG.error("An unexpected error occurred", e); - } + public void persist(final T entry, final Procedure procedure) { + invokeProcedure(procedure, entry); } @Override - public void saveSnapshot(Object o) { + public void persistAsync(final T entry, final Procedure procedure) { + actor.executeInSelf(() -> invokeProcedure(procedure, entry)); } @Override - public void deleteSnapshots(SnapshotSelectionCriteria criteria) { + public void saveSnapshot(final Object snapshot) { + // no-op } @Override - public void deleteMessages(long sequenceNumber) { + public void deleteSnapshots(final SnapshotSelectionCriteria criteria) { + // no-op + } + + @Override + public void deleteMessages(final long sequenceNumber) { + // no-op } @Override public long getLastSequenceNumber() { return -1; } -} \ No newline at end of file + + @SuppressWarnings("checkstyle:IllegalCatch") + static void invokeProcedure(final Procedure procedure, final T argument) { + try { + procedure.apply(argument); + } catch (Exception e) { + LOG.error("An unexpected error occurred", e); + } + } +}