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%2Fentityownership%2FEntityOwnerChangeListener.java;h=9c551f257657489055918505a86b5ca45ab90895;hb=a785966182ba80592f99be5a27a9af1d4c2ac37f;hp=bf26163d02130df71d46e45fdb598744257b18e9;hpb=a8f617e6dd21f9a453e9ece1e57f4549899584e7;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListener.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListener.java index bf26163d02..9c551f2576 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListener.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListener.java @@ -28,12 +28,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * A DataChangeListener that listeners for entity owner changes and notifies the EntityOwnershipListenerSupport - * appropriately. + * Listens for entity owner changes and notifies the EntityOwnershipListenerSupport appropriately. * * @author Thomas Pantelis */ @@ -56,30 +56,33 @@ class EntityOwnerChangeListener implements DOMDataTreeChangeListener { @Override public void onDataTreeChanged(Collection changes) { for(DataTreeCandidate change: changes) { - MapEntryNode entityNode = (MapEntryNode) change.getRootNode().getDataAfter().get(); + DataTreeCandidateNode changeRoot = change.getRootNode(); + MapEntryNode entityNode = (MapEntryNode) changeRoot.getDataAfter().get(); - LOG.debug("Entity node updated: {}", change.getRootPath()); + LOG.debug("Entity node changed: {}, {}", changeRoot.getModificationType(), change.getRootPath()); String newOwner = extractOwner(entityNode); String origOwner = null; - Optional> dataBefore = change.getRootNode().getDataBefore(); + Optional> dataBefore = changeRoot.getDataBefore(); if(dataBefore.isPresent()) { - MapEntryNode origEntityNode = (MapEntryNode) change.getRootNode().getDataBefore().get(); + MapEntryNode origEntityNode = (MapEntryNode) changeRoot.getDataBefore().get(); origOwner = extractOwner(origEntityNode); } LOG.debug("New owner: {}, Original owner: {}", newOwner, origOwner); - boolean isOwner = Objects.equal(localMemberName, newOwner); - boolean wasOwner = Objects.equal(localMemberName, origOwner); - if(isOwner || wasOwner) { - Entity entity = createEntity(change.getRootPath()); + if(!Objects.equal(origOwner, newOwner)) { + boolean isOwner = Objects.equal(localMemberName, newOwner); + boolean wasOwner = Objects.equal(localMemberName, origOwner); + if(isOwner || wasOwner) { + Entity entity = createEntity(change.getRootPath()); - LOG.debug("Calling notifyEntityOwnershipListeners: entity: {}, wasOwner: {}, isOwner: {}", - entity, wasOwner, isOwner); + LOG.debug("Calling notifyEntityOwnershipListeners: entity: {}, wasOwner: {}, isOwner: {}", + entity, wasOwner, isOwner); - listenerSupport.notifyEntityOwnershipListeners(entity, wasOwner, isOwner); + listenerSupport.notifyEntityOwnershipListeners(entity, wasOwner, isOwner); + } } } }