[ONOS-7288] Fix race condition of device manager

Change-Id: I38aaae701e96f1114177e619c6f30e1b79f0134a
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 e103b7f..1892ae8 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
@@ -559,14 +559,14 @@
                 deviceDescription = deviceAnnotationOp.combine(deviceId, deviceDescription, Optional.of(annoConfig));
             }
 
+            DeviceEvent event = store.createOrUpdateDevice(provider().id(), deviceId,
+                                                           deviceDescription);
             Futures.getUnchecked(mastershipService.requestRoleFor(deviceId)
                                          .thenAccept(role -> {
                                              log.info("Local role is {} for {}", role, deviceId);
                                              applyRole(deviceId, role);
                                          }));
 
-            DeviceEvent event = store.createOrUpdateDevice(provider().id(), deviceId,
-                                                           deviceDescription);
             if (portConfig != null) {
                 //updating the ports if configration exists
                 List<PortDescription> complete = store.getPortDescriptions(provider().id(), deviceId)