ONOS-5701 fix for NPE symptom
Change-Id: I6cf2035ada7eec2c50400013aaa91ada22d605ae
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
index 9045200..6fe1ca6 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/DeviceManager.java
@@ -71,8 +71,11 @@
import org.onosproject.net.device.PortStatistics;
import org.onosproject.net.provider.AbstractListenerProviderRegistry;
import org.onosproject.net.provider.AbstractProviderService;
+import org.onosproject.net.provider.Provider;
+import org.onosproject.net.provider.ProviderId;
import org.slf4j.Logger;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Multimap;
import com.google.common.util.concurrent.Futures;
@@ -870,11 +873,18 @@
.filter(mastershipService::isLocalMaster)
// for each locally managed Device, update all port descriptions
.map(did -> {
+ ProviderId pid = Optional.ofNullable(getProvider(did))
+ .map(Provider::id)
+ .orElse(null);
+ if (pid == null) {
+ log.warn("Provider not found for {}", did);
+ return ImmutableList.<DeviceEvent>of();
+ }
List<PortDescription> pds
- = store.getPortDescriptions(getProvider(did).id(), did)
+ = store.getPortDescriptions(pid, did)
.map(pdesc -> applyAllPortOps(did, pdesc))
.collect(Collectors.toList());
- return store.updatePorts(getProvider(did).id(), did, pds);
+ return store.updatePorts(pid, did, pds);
})
// ..and port port update event if necessary
.forEach(evts -> evts.forEach(this::post));