You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/12/07 08:09:27 UTC
[dubbo] branch 3.0 updated: [3.0] Reduce memory allocation (#9362)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 954c715 [3.0] Reduce memory allocation (#9362)
954c715 is described below
commit 954c715366931dd81cf66592700f6f54b1cbbe09
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Tue Dec 7 16:09:14 2021 +0800
[3.0] Reduce memory allocation (#9362)
---
.../dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java | 9 +++++----
.../apache/dubbo/rpc/cluster/support/FailoverClusterInvoker.java | 6 +++++-
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java
index 1b803de..846a740 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java
@@ -51,9 +51,12 @@ import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_K
public class ConsumerContextFilter implements ClusterFilter, ClusterFilter.Listener {
private ApplicationModel applicationModel;
+ private Set<PenetrateAttachmentSelector> supportedSelectors;
public ConsumerContextFilter(ApplicationModel applicationModel) {
this.applicationModel = applicationModel;
+ ExtensionLoader<PenetrateAttachmentSelector> selectorExtensionLoader = applicationModel.getExtensionLoader(PenetrateAttachmentSelector.class);
+ supportedSelectors = selectorExtensionLoader.getSupportedExtensionInstances();
}
@Override
@@ -68,11 +71,9 @@ public class ConsumerContextFilter implements ClusterFilter, ClusterFilter.Liste
((RpcInvocation) invocation).setInvoker(invoker);
}
- ExtensionLoader<PenetrateAttachmentSelector> selectorExtensionLoader = applicationModel.getExtensionLoader(PenetrateAttachmentSelector.class);
- Set<String> supportedSelectors = selectorExtensionLoader.getSupportedExtensions();
if (CollectionUtils.isNotEmpty(supportedSelectors)) {
- for (String supportedSelector : supportedSelectors) {
- Map<String, Object> selected = selectorExtensionLoader.getExtension(supportedSelector).select();
+ for (PenetrateAttachmentSelector supportedSelector : supportedSelectors) {
+ Map<String, Object> selected = supportedSelector.select();
if (CollectionUtils.isNotEmptyMap(selected)) {
((RpcInvocation) invocation).addObjectAttachments(selected);
}
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailoverClusterInvoker.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailoverClusterInvoker.java
index d3abeb2..8781dc7 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailoverClusterInvoker.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/FailoverClusterInvoker.java
@@ -75,6 +75,7 @@ public class FailoverClusterInvoker<T> extends AbstractClusterInvoker<T> {
Invoker<T> invoker = select(loadbalance, invocation, copyInvokers, invoked);
invoked.add(invoker);
RpcContext.getServiceContext().setInvokers((List) invoked);
+ boolean success = false;
try {
Result result = invokeWithContext(invoker, invocation);
if (le != null && logger.isWarnEnabled()) {
@@ -88,6 +89,7 @@ public class FailoverClusterInvoker<T> extends AbstractClusterInvoker<T> {
+ " using the dubbo version " + Version.getVersion() + ". Last error is: "
+ le.getMessage(), le);
}
+ success = true;
return result;
} catch (RpcException e) {
if (e.isBiz()) { // biz exception.
@@ -97,7 +99,9 @@ public class FailoverClusterInvoker<T> extends AbstractClusterInvoker<T> {
} catch (Throwable e) {
le = new RpcException(e.getMessage(), e);
} finally {
- providers.add(invoker.getUrl().getAddress());
+ if (!success) {
+ providers.add(invoker.getUrl().getAddress());
+ }
}
}
throw new RpcException(le.getCode(), "Failed to invoke the method "