Committed by
Gerrit Code Review
Fix STC crashes due to devices not found
Change-Id: I23f17b125498fbc5a615498815f862b3544bea34
Showing
2 changed files
with
51 additions
and
39 deletions
... | @@ -15,19 +15,6 @@ | ... | @@ -15,19 +15,6 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.device.impl; | 16 | package org.onosproject.net.device.impl; |
17 | 17 | ||
18 | -import static com.google.common.base.Preconditions.checkNotNull; | ||
19 | -import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; | ||
20 | -import static org.onlab.util.Tools.groupedThreads; | ||
21 | -import static org.onlab.util.Tools.nullIsNotFound; | ||
22 | -import static org.onosproject.net.MastershipRole.MASTER; | ||
23 | -import static org.onosproject.net.MastershipRole.NONE; | ||
24 | -import static org.onosproject.net.MastershipRole.STANDBY; | ||
25 | -import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription; | ||
26 | -import static org.onosproject.net.optical.device.OduCltPortHelper.oduCltPortDescription; | ||
27 | -import static org.onosproject.security.AppGuard.checkPermission; | ||
28 | -import static org.onosproject.security.AppPermission.Type.DEVICE_READ; | ||
29 | -import static org.slf4j.LoggerFactory.getLogger; | ||
30 | - | ||
31 | import java.util.Collection; | 18 | import java.util.Collection; |
32 | import java.util.HashSet; | 19 | import java.util.HashSet; |
33 | import java.util.List; | 20 | import java.util.List; |
... | @@ -90,6 +77,18 @@ import org.slf4j.Logger; | ... | @@ -90,6 +77,18 @@ import org.slf4j.Logger; |
90 | 77 | ||
91 | import com.google.common.util.concurrent.Futures; | 78 | import com.google.common.util.concurrent.Futures; |
92 | 79 | ||
80 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
81 | +import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; | ||
82 | +import static org.onlab.util.Tools.groupedThreads; | ||
83 | +import static org.onosproject.net.MastershipRole.MASTER; | ||
84 | +import static org.onosproject.net.MastershipRole.NONE; | ||
85 | +import static org.onosproject.net.MastershipRole.STANDBY; | ||
86 | +import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription; | ||
87 | +import static org.onosproject.net.optical.device.OduCltPortHelper.oduCltPortDescription; | ||
88 | +import static org.onosproject.security.AppGuard.checkPermission; | ||
89 | +import static org.onosproject.security.AppPermission.Type.DEVICE_READ; | ||
90 | +import static org.slf4j.LoggerFactory.getLogger; | ||
91 | + | ||
93 | /** | 92 | /** |
94 | * Provides implementation of the device SB & NB APIs. | 93 | * Provides implementation of the device SB & NB APIs. |
95 | */ | 94 | */ |
... | @@ -539,7 +538,10 @@ public class DeviceManager | ... | @@ -539,7 +538,10 @@ public class DeviceManager |
539 | portDescription); | 538 | portDescription); |
540 | return; | 539 | return; |
541 | } | 540 | } |
542 | - Device device = nullIsNotFound(getDevice(deviceId), "Device not found"); | 541 | + Device device = getDevice(deviceId); |
542 | + if (device == null) { | ||
543 | + log.trace("Device not found: {}", deviceId); | ||
544 | + } | ||
543 | if ((Device.Type.ROADM.equals(device.type())) || | 545 | if ((Device.Type.ROADM.equals(device.type())) || |
544 | (Device.Type.OTN.equals(device.type()))) { | 546 | (Device.Type.OTN.equals(device.type()))) { |
545 | // FIXME This is ignoring all other info in portDescription given as input?? | 547 | // FIXME This is ignoring all other info in portDescription given as input?? | ... | ... |
... | @@ -15,10 +15,24 @@ | ... | @@ -15,10 +15,24 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.store.device.impl; | 16 | package org.onosproject.store.device.impl; |
17 | 17 | ||
18 | -import com.google.common.collect.FluentIterable; | 18 | +import java.io.IOException; |
19 | -import com.google.common.collect.ImmutableList; | 19 | +import java.util.ArrayList; |
20 | -import com.google.common.collect.Maps; | 20 | +import java.util.Collection; |
21 | -import com.google.common.collect.Sets; | 21 | +import java.util.Collections; |
22 | +import java.util.HashMap; | ||
23 | +import java.util.HashSet; | ||
24 | +import java.util.Iterator; | ||
25 | +import java.util.List; | ||
26 | +import java.util.Map; | ||
27 | +import java.util.Map.Entry; | ||
28 | +import java.util.Objects; | ||
29 | +import java.util.Optional; | ||
30 | +import java.util.Set; | ||
31 | +import java.util.concurrent.ConcurrentMap; | ||
32 | +import java.util.concurrent.ExecutorService; | ||
33 | +import java.util.concurrent.ScheduledExecutorService; | ||
34 | +import java.util.concurrent.TimeUnit; | ||
35 | +import java.util.stream.Stream; | ||
22 | 36 | ||
23 | import org.apache.commons.lang3.RandomUtils; | 37 | import org.apache.commons.lang3.RandomUtils; |
24 | import org.apache.felix.scr.annotations.Activate; | 38 | import org.apache.felix.scr.annotations.Activate; |
... | @@ -82,24 +96,10 @@ import org.onosproject.store.service.StorageService; | ... | @@ -82,24 +96,10 @@ import org.onosproject.store.service.StorageService; |
82 | import org.onosproject.store.service.WallClockTimestamp; | 96 | import org.onosproject.store.service.WallClockTimestamp; |
83 | import org.slf4j.Logger; | 97 | import org.slf4j.Logger; |
84 | 98 | ||
85 | -import java.io.IOException; | 99 | +import com.google.common.collect.FluentIterable; |
86 | -import java.util.ArrayList; | 100 | +import com.google.common.collect.ImmutableList; |
87 | -import java.util.Collection; | 101 | +import com.google.common.collect.Maps; |
88 | -import java.util.Collections; | 102 | +import com.google.common.collect.Sets; |
89 | -import java.util.HashMap; | ||
90 | -import java.util.HashSet; | ||
91 | -import java.util.Iterator; | ||
92 | -import java.util.List; | ||
93 | -import java.util.Map; | ||
94 | -import java.util.Map.Entry; | ||
95 | -import java.util.Objects; | ||
96 | -import java.util.Optional; | ||
97 | -import java.util.Set; | ||
98 | -import java.util.concurrent.ConcurrentMap; | ||
99 | -import java.util.concurrent.ExecutorService; | ||
100 | -import java.util.concurrent.ScheduledExecutorService; | ||
101 | -import java.util.concurrent.TimeUnit; | ||
102 | -import java.util.stream.Stream; | ||
103 | 103 | ||
104 | import static com.google.common.base.Preconditions.checkArgument; | 104 | import static com.google.common.base.Preconditions.checkArgument; |
105 | import static com.google.common.base.Predicates.notNull; | 105 | import static com.google.common.base.Predicates.notNull; |
... | @@ -111,8 +111,15 @@ import static org.onlab.util.Tools.groupedThreads; | ... | @@ -111,8 +111,15 @@ import static org.onlab.util.Tools.groupedThreads; |
111 | import static org.onlab.util.Tools.minPriority; | 111 | import static org.onlab.util.Tools.minPriority; |
112 | import static org.onosproject.cluster.ControllerNodeToNodeId.toNodeId; | 112 | import static org.onosproject.cluster.ControllerNodeToNodeId.toNodeId; |
113 | import static org.onosproject.net.DefaultAnnotations.merge; | 113 | import static org.onosproject.net.DefaultAnnotations.merge; |
114 | -import static org.onosproject.net.device.DeviceEvent.Type.*; | 114 | +import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED; |
115 | -import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.*; | 115 | +import static org.onosproject.net.device.DeviceEvent.Type.PORT_ADDED; |
116 | +import static org.onosproject.net.device.DeviceEvent.Type.PORT_REMOVED; | ||
117 | +import static org.onosproject.net.device.DeviceEvent.Type.PORT_STATS_UPDATED; | ||
118 | +import static org.onosproject.net.device.DeviceEvent.Type.PORT_UPDATED; | ||
119 | +import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.DEVICE_ADVERTISE; | ||
120 | +import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.DEVICE_INJECTED; | ||
121 | +import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.DEVICE_REMOVE_REQ; | ||
122 | +import static org.onosproject.store.device.impl.GossipDeviceStoreMessageSubjects.PORT_INJECTED; | ||
116 | import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; | 123 | import static org.onosproject.store.service.EventuallyConsistentMapEvent.Type.PUT; |
117 | import static org.slf4j.LoggerFactory.getLogger; | 124 | import static org.slf4j.LoggerFactory.getLogger; |
118 | 125 | ||
... | @@ -669,7 +676,10 @@ public class GossipDeviceStore | ... | @@ -669,7 +676,10 @@ public class GossipDeviceStore |
669 | Timestamped<List<PortDescription>> portDescriptions) { | 676 | Timestamped<List<PortDescription>> portDescriptions) { |
670 | 677 | ||
671 | Device device = devices.get(deviceId); | 678 | Device device = devices.get(deviceId); |
672 | - checkArgument(device != null, DEVICE_NOT_FOUND, deviceId); | 679 | + if (device == null) { |
680 | + log.debug("Device is no longer valid: {}", deviceId); | ||
681 | + return Collections.emptyList(); | ||
682 | + } | ||
673 | 683 | ||
674 | Map<ProviderId, DeviceDescriptions> descsMap = deviceDescs.get(deviceId); | 684 | Map<ProviderId, DeviceDescriptions> descsMap = deviceDescs.get(deviceId); |
675 | checkArgument(descsMap != null, DEVICE_NOT_FOUND, deviceId); | 685 | checkArgument(descsMap != null, DEVICE_NOT_FOUND, deviceId); | ... | ... |
-
Please register or login to post a comment