X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDataChangeListenerRegistrationActor.java;h=89062dc83c1735545b612ed767846688017a6567;hp=b087331287f6f8ccf2f4e7239f4cfbbc39e74f5a;hb=95c296a7c1e8e186a88a0a0dc82e080b2185db33;hpb=4aafd13eccad285b5bb3ee277b0fb0b8721612bc diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationActor.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationActor.java index b087331287..89062dc83c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationActor.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationActor.java @@ -11,6 +11,7 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.PoisonPill; import akka.actor.Props; import akka.japi.Creator; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor; import org.opendaylight.controller.cluster.datastore.messages.CloseDataChangeListenerRegistration; import org.opendaylight.controller.cluster.datastore.messages.CloseDataChangeListenerRegistrationReply; @@ -30,26 +31,35 @@ public class DataChangeListenerRegistrationActor extends AbstractUntypedActor { } @Override - public void handleReceive(Object message) throws Exception { + public void handleReceive(Object message) { if (message instanceof CloseDataChangeListenerRegistration) { closeListenerRegistration(); + } else { + unknownMessage(message); } } - public static Props props( - final ListenerRegistration>> registration) { + public static Props props(final ListenerRegistration>> registration) { return Props.create(new DataChangeListenerRegistrationCreator(registration)); } private void closeListenerRegistration() { registration.close(); - getSender().tell(CloseDataChangeListenerRegistrationReply.INSTANCE, getSelf()); + + if (isValidSender(getSender())) { + getSender().tell(CloseDataChangeListenerRegistrationReply.INSTANCE, getSelf()); + } + getSelf().tell(PoisonPill.getInstance(), getSelf()); } private static class DataChangeListenerRegistrationCreator implements Creator { private static final long serialVersionUID = 1L; + + @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "This field is not Serializable but we don't " + + "create remote instances of this actor and thus don't need it to be Serializable.") final ListenerRegistration>> registration;