diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
index 1eaf196..5209543 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
@@ -462,17 +462,15 @@
             }
         });
 
-        if (hostIdSet != null) {
-            networkIdHostIdSetMap.compute(networkId, (id, existingHostIds) -> {
-                if (existingHostIds == null || existingHostIds.isEmpty()) {
-                    return new HashSet<>();
-                } else {
-                    return new HashSet<>(Sets.difference(existingHostIds, hostIdSet));
-                }
-            });
+        networkIdHostIdSetMap.compute(networkId, (id, existingHostIds) -> {
+            if (existingHostIds == null || existingHostIds.isEmpty()) {
+                return new HashSet<>();
+            } else {
+                return new HashSet<>(Sets.difference(existingHostIds, hostIdSet));
+            }
+        });
 
-            hostIdVirtualHostMap.remove(hostId);
-        }
+        hostIdVirtualHostMap.remove(hostId);
     }
 
     /**
@@ -567,15 +565,13 @@
         Set<VirtualLink> virtualLinkSet = new HashSet<>();
         virtualLinkSet.add(virtualLink);
 
-        if (virtualLinkSet != null) {
-            networkIdVirtualLinkSetMap.compute(networkId, (id, existingVirtualLinks) -> {
-                if (existingVirtualLinks == null || existingVirtualLinks.isEmpty()) {
-                    return new HashSet<>();
-                } else {
-                    return new HashSet<>(Sets.difference(existingVirtualLinks, virtualLinkSet));
-                }
-            });
-        }
+        networkIdVirtualLinkSetMap.compute(networkId, (id, existingVirtualLinks) -> {
+            if (existingVirtualLinks == null || existingVirtualLinks.isEmpty()) {
+                return new HashSet<>();
+            } else {
+                return new HashSet<>(Sets.difference(existingVirtualLinks, virtualLinkSet));
+            }
+        });
         return virtualLink;
     }
 
