[ONOS-7332] Ensure DEVICE_ADDED events are not skipped after device creation on a non-master node

Change-Id: I9a6ee21833d89db16fab6b13bb946746e381d36c
diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
index c72da5f..03bfc55 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/GossipDeviceStore.java
@@ -304,7 +304,7 @@
                                                          DeviceDescription deviceDescription) {
         NodeId localNode = clusterService.getLocalNode().id();
         NodeId deviceNode = mastershipService.getMasterFor(deviceId);
-        final boolean isMaster = localNode.equals(deviceNode);
+        boolean isMaster = localNode.equals(deviceNode);
 
         // Process device update only if we're the master,
         // otherwise signal the actual master.
@@ -312,9 +312,15 @@
 
         // If this node is the master for the device, acquire a new timestamp. Otherwise,
         // use a 0,0 or tombstone timestamp to create the device if it doesn't already exist.
-        final Timestamp newTimestamp = isMaster
-                ? deviceClockService.getTimestamp(deviceId)
-                : removalRequest.getOrDefault(deviceId, DEFAULT_TIMESTAMP);
+        Timestamp newTimestamp;
+        try {
+            newTimestamp = isMaster
+                    ? deviceClockService.getTimestamp(deviceId)
+                    : removalRequest.getOrDefault(deviceId, DEFAULT_TIMESTAMP);
+        } catch (IllegalStateException e) {
+            newTimestamp = removalRequest.getOrDefault(deviceDescription, DEFAULT_TIMESTAMP);
+            isMaster = false;
+        }
         final Timestamped<DeviceDescription> deltaDesc = new Timestamped<>(deviceDescription, newTimestamp);
         final Timestamped<DeviceDescription> mergedDesc;
         final Map<ProviderId, DeviceDescriptions> device = getOrCreateDeviceDescriptionsMap(deviceId);
@@ -332,8 +338,6 @@
             log.debug("Notifying peers of a device update topology event for providerId: {} and deviceId: {}",
                     providerId, deviceId);
             notifyPeers(new InternalDeviceEvent(providerId, deviceId, mergedDesc));
-        } else {
-            return null;
         }
 
         return deviceEvent;