Improve the performance of ResourceManager#getAvailableResources()
By removing an extra map access in ConsistentResourceStore#isAvailable()
This patch mitigates the issue of ONOS-3869
Change-Id: Ief231f5532c34719c150855afe0ea69fc6b478f1
diff --git a/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java
index 6d7bc31..eddc8d7 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/newresource/impl/ConsistentResourceStore.java
@@ -349,16 +349,16 @@
checkNotNull(resource);
checkArgument(resource instanceof DiscreteResource || resource instanceof ContinuousResource);
- // check if it's registered or not.
- Versioned<Set<Resource>> v = childMap.get(resource.parent().get().id());
- if (v == null || !v.value().contains(resource)) {
- return false;
- }
-
if (resource instanceof DiscreteResource) {
// check if already consumed
return getResourceAllocations(resource.id()).isEmpty();
} else {
+ // check if it's registered or not.
+ Versioned<Set<Resource>> v = childMap.get(resource.parent().get().id());
+ if (v == null) {
+ return false;
+ }
+
ContinuousResource requested = (ContinuousResource) resource;
ContinuousResource registered = v.value().stream()
.filter(c -> c.id().equals(resource.id()))