Fixed deadlock in BMv2 device context service

Also minor refactoring of synchronized blocks.

Change-Id: Ifea25208ca4f1839bb3f21ba5b5ecfb2441baa35
diff --git a/providers/bmv2/device/src/main/java/org/onosproject/provider/bmv2/device/impl/Bmv2DeviceProvider.java b/providers/bmv2/device/src/main/java/org/onosproject/provider/bmv2/device/impl/Bmv2DeviceProvider.java
index 1a9d4a0..2f30f06 100644
--- a/providers/bmv2/device/src/main/java/org/onosproject/provider/bmv2/device/impl/Bmv2DeviceProvider.java
+++ b/providers/bmv2/device/src/main/java/org/onosproject/provider/bmv2/device/impl/Bmv2DeviceProvider.java
@@ -269,12 +269,10 @@
 
     private void disconnectDevice(DeviceId did) {
         log.debug("Trying to disconnect device from core... deviceId={}", did);
-        activeDevices.compute(did, (k, v) -> {
-            if (deviceService.isAvailable(did)) {
-                providerService.deviceDisconnected(did);
-            }
-            return null;
-        });
+        if (deviceService.isAvailable(did)) {
+            providerService.deviceDisconnected(did);
+        }
+        activeDevices.put(did, null);
     }
 
     /**