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%2FShardDataTreeNotificationPublisherActor.java;h=c22bc3bd98930c2e561a7b4f9b06083da1dfb8d0;hb=55a9b9f42a14c56060f74b38f84d444c0fbfecc4;hp=81023562801926fb0aa05c394afb9014c4be5240;hpb=38402d3e9b8976a40d7926efe47a06243210562f;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeNotificationPublisherActor.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeNotificationPublisherActor.java index 8102356280..c22bc3bd98 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeNotificationPublisherActor.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeNotificationPublisherActor.java @@ -7,7 +7,6 @@ */ package org.opendaylight.controller.cluster.datastore; -import akka.actor.Props; import com.google.common.base.Stopwatch; import java.util.concurrent.TimeUnit; import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor; @@ -19,31 +18,43 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; * * @author Thomas Pantelis */ -public class ShardDataTreeNotificationPublisherActor extends AbstractUntypedActor { +public class ShardDataTreeNotificationPublisherActor + extends AbstractUntypedActor { + private final T publisher; private final Stopwatch timer = Stopwatch.createUnstarted(); private final String name; + private final String logContext; - private ShardDataTreeNotificationPublisherActor(String name) { + protected ShardDataTreeNotificationPublisherActor(final T publisher, final String name, final String logContext) { + this.publisher = publisher; this.name = name; + this.logContext = logContext; + } + + protected T publisher() { + return publisher; + } + + protected String logContext() { + return logContext; } @Override protected void handleReceive(Object message) { - if(message instanceof PublishNotifications) { - PublishNotifications publisher = (PublishNotifications)message; + if (message instanceof PublishNotifications) { + PublishNotifications toPublish = (PublishNotifications)message; timer.start(); try { - publisher.publish(); + publisher.publishChanges(toPublish.candidate); } finally { long elapsedTime = timer.elapsed(TimeUnit.MILLISECONDS); - if(elapsedTime >= ShardDataTreeNotificationPublisher.PUBLISH_DELAY_THRESHOLD_IN_MS) { + if (elapsedTime >= ShardDataTreeNotificationPublisher.PUBLISH_DELAY_THRESHOLD_IN_MS) { LOG.warn("{}: Generation of change events for {} took longer than expected. Elapsed time: {}", - publisher.logContext, name, timer); + logContext, name, timer); } else { - LOG.debug("{}: Elapsed time for generation of change events for {}: {}", publisher.logContext, - name, timer); + LOG.debug("{}: Elapsed time for generation of change events for {}: {}", logContext, name, timer); } timer.reset(); @@ -51,24 +62,11 @@ public class ShardDataTreeNotificationPublisherActor extends AbstractUntypedActo } } - static Props props(String notificationType) { - return Props.create(ShardDataTreeNotificationPublisherActor.class, notificationType); - } - static class PublishNotifications { - private final ShardDataTreeNotificationPublisher publisher; private final DataTreeCandidate candidate; - private final String logContext; - PublishNotifications(ShardDataTreeNotificationPublisher publisher, DataTreeCandidate candidate, - String logContext) { - this.publisher = publisher; + PublishNotifications(DataTreeCandidate candidate) { this.candidate = candidate; - this.logContext = logContext; - } - - private void publish() { - publisher.publishChanges(candidate, logContext); } } }