You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2024/08/19 12:10:39 UTC
(servicecomb-java-chassis) branch master updated: enhancement of InvocationFilterChains (#4473)
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 98698a9b8 enhancement of InvocationFilterChains (#4473)
98698a9b8 is described below
commit 98698a9b8e98fb846b5b7eb61f0a2f6bab23e26e
Author: Karson <ka...@hotmail.com>
AuthorDate: Mon Aug 19 20:10:34 2024 +0800
enhancement of InvocationFilterChains (#4473)
---
.../core/filter/InvocationFilterChains.java | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java b/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
index 9739f0b2d..6dde66c33 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.servicecomb.core.filter;
import java.util.Comparator;
@@ -24,6 +25,7 @@ import java.util.stream.Collectors;
import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
public class InvocationFilterChains {
+
private final List<? extends Filter> filters;
private final Map<String, Map<String, FilterNode>> microserviceChains = new ConcurrentHashMapEx<>();
@@ -37,15 +39,13 @@ public class InvocationFilterChains {
}
public FilterNode findChain(String application, String serviceName) {
- FilterNode filterNode = microserviceChains.computeIfAbsent(application, key -> new ConcurrentHashMapEx<>())
- .get(serviceName);
- if (filterNode == null) {
- List<Filter> serviceFilters = filters.stream()
- .filter(e -> e.enabledForMicroservice(application, serviceName))
- .sorted(Comparator.comparingInt(a -> a.getOrder(application, serviceName))).collect(Collectors.toList());
- filterNode = FilterNode.buildChain(serviceFilters);
- microserviceChains.get(application).put(serviceName, filterNode);
- }
- return filterNode;
+ return microserviceChains.computeIfAbsent(application, key -> new ConcurrentHashMapEx<>())
+ .computeIfAbsent(serviceName, (serviceNameInner) -> {
+ List<Filter> serviceFilters = filters.stream()
+ .filter(e -> e.enabledForMicroservice(application, serviceName))
+ .sorted(Comparator.comparingInt(a -> a.getOrder(application, serviceName)))
+ .collect(Collectors.toList());
+ return FilterNode.buildChain(serviceFilters);
+ });
}
}