diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentResourceStore.java
index e367281..29ef2f3 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentResourceStore.java
@@ -358,14 +358,6 @@
                 .map(x -> (ContinuousResource) x)
                 .collect(Collectors.toList());
 
-        // short-circuit decision avoiding unnecessary distributed map operations
-        if (continuousValues.isEmpty()) {
-            return discreteTxStore.register(key, discreteValues);
-        }
-        if (discreteValues.isEmpty()) {
-            return continuousTxStore.register(key, continuousValues);
-        }
-
         return discreteTxStore.register(key, discreteValues)
                 && continuousTxStore.register(key, continuousValues);
     }
@@ -395,14 +387,6 @@
                 .map(x -> (ContinuousResource) x)
                 .collect(Collectors.toList());
 
-        // short-circuit decision avoiding unnecessary distributed map operations
-        if (continuousValues.isEmpty()) {
-            return discreteTxStore.unregister(key, discreteValues);
-        }
-        if (discreteValues.isEmpty()) {
-            return continuousTxStore.unregister(key, continuousValues);
-        }
-
         return discreteTxStore.unregister(key, discreteValues)
                 && continuousTxStore.unregister(key, continuousValues);
     }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
index 0813f15..7a630fa 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalContinuousResourceStore.java
@@ -67,6 +67,11 @@
     }
 
     boolean register(DiscreteResourceId key, List<ContinuousResource> values) {
+        // short-circuit: receiving empty resource is regarded as success
+        if (values.isEmpty()) {
+            return true;
+        }
+
         Set<ContinuousResource> requested = new LinkedHashSet<>(values);
         Set<ContinuousResource> oldValues = childMap.putIfAbsent(key, requested);
         if (oldValues == null) {
@@ -95,6 +100,11 @@
     }
 
     boolean unregister(DiscreteResourceId key, List<ContinuousResource> values) {
+        // short-circuit: receiving empty resource is regarded as success
+        if (values.isEmpty()) {
+            return true;
+        }
+
         Set<ContinuousResource> oldValues = childMap.putIfAbsent(key, new LinkedHashSet<>());
         if (oldValues == null) {
             log.trace("No-Op removing values. key {} did not exist", key);
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
index 72841fb..3c99da9 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/TransactionalDiscreteResourceStore.java
@@ -63,6 +63,11 @@
     }
 
     boolean register(DiscreteResourceId key, List<DiscreteResource> values) {
+        // short-circuit: receiving empty resource is regarded as success
+        if (values.isEmpty()) {
+            return true;
+        }
+
         Set<DiscreteResource> requested = new LinkedHashSet<>(values);
         Set<DiscreteResource> oldValues = childMap.putIfAbsent(key, requested);
         if (oldValues == null) {
@@ -82,6 +87,11 @@
     }
 
     boolean unregister(DiscreteResourceId key, List<DiscreteResource> values) {
+        // short-circuit: receiving empty resource is regarded as success
+        if (values.isEmpty()) {
+            return true;
+        }
+
         Set<DiscreteResource> oldValues = childMap.putIfAbsent(key, new LinkedHashSet<>());
         if (oldValues == null) {
             log.trace("No-Op removing values. key {} did not exist", key);
