Reduce the nubmer of access to consistent map for performance
Change-Id: Ia57edfca4e0b5f264e181ed5bbaef74ebb46724a
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 4b2608c..a468c04 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
@@ -441,9 +441,17 @@
.filter(x -> x.id().equals(parent.child(cls)))
.filter(x -> x instanceof ContinuousResource)
.map(x -> (ContinuousResource) x)
- .filter(x -> continuousConsumers.containsKey(x.id()))
- .filter(x -> continuousConsumers.get(x.id()) != null)
- .filter(x -> !continuousConsumers.get(x.id()).value().allocations().isEmpty());
+ // we don't use cascading simple predicates like follows to reduce accesses to consistent map
+ // .filter(x -> continuousConsumers.containsKey(x.id()))
+ // .filter(x -> continuousConsumers.get(x.id()) != null)
+ // .filter(x -> !continuousConsumers.get(x.id()).value().allocations().isEmpty());
+ .filter(resource -> {
+ Versioned<ContinuousResourceAllocation> allocation = continuousConsumers.get(resource.id());
+ if (allocation == null) {
+ return false;
+ }
+ return !allocation.value().allocations().isEmpty();
+ });
return Stream.concat(discrete, continuous).collect(Collectors.toList());
}