Bug 5228: More SMR fixes 01/34101/1
authorLorand Jakab <lojakab@cisco.com>
Thu, 4 Feb 2016 22:27:06 +0000 (00:27 +0200)
committerLorand Jakab <lojakab@cisco.com>
Thu, 4 Feb 2016 22:27:06 +0000 (00:27 +0200)
Don't send mapping update notification for southbound originated mapping
changes, since the notifications are used for sending SMRs, and that is
handled elsewhere in MapServer.java's handleMapRegister() method, no
need to handle again in onMappingChanged().

Change-Id: I07ee8110f898e92c17fed0e14fb2f2f121cef143
Signed-off-by: Lorand Jakab <lojakab@cisco.com>
mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/mdsal/MappingDataListener.java

index d3c070063b71c41915c4aebec888a22840a92dbe..2124066eb45f2321df1b23462f112fbc78db526f 100644 (file)
@@ -17,6 +17,7 @@ import org.opendaylight.lispflowmapping.implementation.util.MSNotificationInputU
 import org.opendaylight.lispflowmapping.interfaces.mapcache.IMappingSystem;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingChange;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingDatabase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.MappingOrigin;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.mapping.database.VirtualNetworkIdentifier;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -81,10 +82,16 @@ public class MappingDataListener extends AbstractDataListener {
 
                 mapSystem.addMapping(mapping.getOrigin(), mapping.getMappingRecord().getEid(),
                         mapping.getMappingRecord());
-                try {
-                    notificationPublishService.putNotification(MSNotificationInputUtil.toMappingChanged(mapping, MappingChange.Updated));
-                } catch (InterruptedException e) {
-                    LOG.warn("Notification publication interrupted!");
+
+                if (mapping.getOrigin() == MappingOrigin.Northbound) {
+                    // Only publish notifications for mapping changes caused by Northbound, since Southbound has a
+                    // dedicated code path for detecting mapping updates. The notifications are used for sending SMR.
+                    try {
+                        notificationPublishService.putNotification(MSNotificationInputUtil.toMappingChanged(mapping,
+                                MappingChange.Updated));
+                    } catch (InterruptedException e) {
+                        LOG.warn("Notification publication interrupted!");
+                    }
                 }
             }
         }