X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2FNonPersistentDataProvider.java;h=5461689d2aebc84739b165657db6330e5feba59f;hb=d6d516aa953924121c3cf2a5bf9fd992b9c2b326;hp=d1af58f18b426c19d7c70ef0d0a44734948e4b72;hpb=edb47bc56dc36013c1dbb9567212ed0119d14914;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..5461689d2a 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,13 @@ */ package org.opendaylight.controller.cluster; +import static java.util.Objects.requireNonNull; + import akka.japi.Procedure; +import akka.persistence.JournalProtocol; +import akka.persistence.SnapshotProtocol; import akka.persistence.SnapshotSelectionCriteria; +import org.opendaylight.controller.cluster.common.actor.ExecuteInSelfActor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,34 +23,63 @@ 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 persistAsync(final T entry, final Procedure procedure) { + actor.executeInSelf(() -> invokeProcedure(procedure, entry)); } @Override - public void saveSnapshot(Object o) { + public void saveSnapshot(final Object snapshot) { + // no-op } @Override - public void deleteSnapshots(SnapshotSelectionCriteria criteria) { + public void deleteSnapshots(final SnapshotSelectionCriteria criteria) { + // no-op } @Override - public void deleteMessages(long sequenceNumber) { + 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); + } + } + + @Override + public boolean handleJournalResponse(final JournalProtocol.Response response) { + return false; + } + + @Override + public boolean handleSnapshotResponse(final SnapshotProtocol.Response response) { + return false; + } +}