diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml
index ab6073a88b..fb79bd584a 100644
--- a/dubbo-dependencies-bom/pom.xml
+++ b/dubbo-dependencies-bom/pom.xml
@@ -201,7 +201,7 @@
2.0
1.5.0
1.23.0
- 2.40.0
+ 2.41.0
check
1.0.0
2.38.0
diff --git a/dubbo-dependencies/dubbo-dependencies-zookeeper-curator5/pom.xml b/dubbo-dependencies/dubbo-dependencies-zookeeper-curator5/pom.xml
index a86327cb2e..dbe8e646ab 100644
--- a/dubbo-dependencies/dubbo-dependencies-zookeeper-curator5/pom.xml
+++ b/dubbo-dependencies/dubbo-dependencies-zookeeper-curator5/pom.xml
@@ -36,7 +36,7 @@
1.7.36
5.1.0
3.8.3
- 2.40.0
+ 2.41.0
check
1.0.0
2.38.0
diff --git a/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml b/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
index cca065cfd5..62a3340084 100644
--- a/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
+++ b/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
@@ -36,7 +36,7 @@
1.7.36
4.3.0
3.4.14
- 2.40.0
+ 2.41.0
check
1.0.0
2.38.0
diff --git a/dubbo-dependencies/pom.xml b/dubbo-dependencies/pom.xml
index 441adfdb68..735560b9de 100644
--- a/dubbo-dependencies/pom.xml
+++ b/dubbo-dependencies/pom.xml
@@ -32,7 +32,7 @@
- 2.40.0
+ 2.41.0
check
1.0.0
2.38.0
diff --git a/dubbo-distribution/pom.xml b/dubbo-distribution/pom.xml
index 7b84379e07..e22311c0e0 100644
--- a/dubbo-distribution/pom.xml
+++ b/dubbo-distribution/pom.xml
@@ -28,7 +28,7 @@
pom
- 2.40.0
+ 2.41.0
check
1.0.0
2.38.0
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataConstants.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataConstants.java
index 8b808d7b24..d4e0f33e2d 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataConstants.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataConstants.java
@@ -28,4 +28,6 @@ public interface MetadataConstants {
String REPORT_CONSUMER_URL_KEY = "report-consumer-definition";
String PATH_SEPARATOR = "/";
+
+ String NAMESPACE_KEY = "namespace";
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
index 3fd14dff0b..ded589b471 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/MetadataReportInstance.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.metadata.report;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.URLBuilder;
import org.apache.dubbo.common.resource.Disposable;
+import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.MetadataReportConfig;
import org.apache.dubbo.metadata.report.support.NopMetadataReport;
import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -35,6 +36,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA
import static org.apache.dubbo.common.constants.CommonConstants.PORT_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_LOCAL_FILE_CACHE_ENABLED;
import static org.apache.dubbo.common.utils.StringUtils.isEmpty;
+import static org.apache.dubbo.metadata.MetadataConstants.NAMESPACE_KEY;
import static org.apache.dubbo.metadata.report.support.Constants.METADATA_REPORT_KEY;
/**
@@ -102,18 +104,26 @@ public class MetadataReportInstance implements Disposable {
url = url.addParameterIfAbsent(
REGISTRY_LOCAL_FILE_CACHE_ENABLED,
String.valueOf(applicationModel.getCurrentConfig().getEnableFileCache()));
- String relatedRegistryId = isEmpty(config.getRegistry())
- ? (isEmpty(config.getId()) ? DEFAULT_KEY : config.getId())
- : config.getRegistry();
// RegistryConfig registryConfig = applicationModel.getConfigManager().getRegistry(relatedRegistryId)
// .orElseThrow(() -> new IllegalStateException("Registry id " + relatedRegistryId + " does not
// exist."));
MetadataReport metadataReport = metadataReportFactory.getMetadataReport(url);
if (metadataReport != null) {
- metadataReports.put(relatedRegistryId, metadataReport);
+ metadataReports.put(getRelatedRegistryId(config, url), metadataReport);
}
}
+ private String getRelatedRegistryId(MetadataReportConfig config, URL url) {
+ String relatedRegistryId = isEmpty(config.getRegistry())
+ ? (isEmpty(config.getId()) ? DEFAULT_KEY : config.getId())
+ : config.getRegistry();
+ String namespace = url.getParameter(NAMESPACE_KEY);
+ if (!StringUtils.isEmpty(namespace)) {
+ relatedRegistryId += ":" + namespace;
+ }
+ return relatedRegistryId;
+ }
+
public Map getMetadataReports(boolean checked) {
return metadataReports;
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactory.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactory.java
index e0d156773d..7f1770291f 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactory.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactory.java
@@ -50,7 +50,7 @@ public abstract class AbstractMetadataReportFactory implements MetadataReportFac
@Override
public MetadataReport getMetadataReport(URL url) {
url = url.setPath(MetadataReport.class.getName()).removeParameters(EXPORT_KEY, REFER_KEY);
- String key = url.toServiceString();
+ String key = toMetadataReportKey(url);
MetadataReport metadataReport = serviceStoreMap.get(key);
if (metadataReport != null) {
@@ -88,6 +88,10 @@ public abstract class AbstractMetadataReportFactory implements MetadataReportFac
}
}
+ protected String toMetadataReportKey(URL url) {
+ return url.toServiceString();
+ }
+
@Override
public void destroy() {
lock.lock();
diff --git a/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java
index a858a0a1b1..338b4067b7 100644
--- a/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java
+++ b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java
@@ -17,9 +17,12 @@
package org.apache.dubbo.metadata.store.nacos;
import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.metadata.report.MetadataReport;
import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;
+import static org.apache.dubbo.metadata.MetadataConstants.NAMESPACE_KEY;
+
/**
* metadata report factory impl for nacos
*/
@@ -28,4 +31,15 @@ public class NacosMetadataReportFactory extends AbstractMetadataReportFactory {
protected MetadataReport createMetadataReport(URL url) {
return new NacosMetadataReport(url);
}
+
+ @Override
+ protected String toMetadataReportKey(URL url) {
+ String namespace = url.getParameter(NAMESPACE_KEY);
+ if (!StringUtils.isEmpty(namespace)) {
+ return URL.valueOf(url.toServiceString())
+ .addParameter(NAMESPACE_KEY, namespace)
+ .toString();
+ }
+ return super.toMetadataReportKey(url);
+ }
}
diff --git a/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java
index 8544ba564e..d3e1d53700 100644
--- a/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java
+++ b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java
@@ -29,6 +29,8 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
@@ -207,20 +209,41 @@ public abstract class AbstractServiceRestMetadataResolver implements ServiceRest
sort(declaredServiceMethods, MethodComparator.INSTANCE);
sort(serviceMethods, MethodComparator.INSTANCE);
+ // prevent from repeat method (impl proxy) & leaving out method(interface proxy)
+ HashSet methodComparators = new HashSet<>();
+
+ // TODO Map key: method desc & value: Set for accelerate loop speed
for (Method declaredServiceMethod : declaredServiceMethods) {
for (Method serviceMethod : serviceMethods) {
- if (overrides(serviceMethod, declaredServiceMethod)) {
- serviceMethodsMap.put(serviceMethod, declaredServiceMethod);
- // override method count > 1
- // // once method match ,break for decrease loop times
- // break;
+
+ if (!overrides(serviceMethod, declaredServiceMethod)) {
+ continue;
}
+
+ String methodDesc = getMethodDesc(serviceMethod);
+
+ if (!methodComparators.add(methodDesc)) {
+ continue;
+ }
+
+ serviceMethodsMap.put(serviceMethod, declaredServiceMethod);
}
}
+
// make them to be read-only
return unmodifiableMap(serviceMethodsMap);
}
+ /**
+ * For simple method desc
+ *
+ * @param serviceMethod
+ * @return
+ */
+ private String getMethodDesc(Method serviceMethod) {
+ return serviceMethod.getName() + Arrays.toString(serviceMethod.getParameterTypes());
+ }
+
private void putServiceMethodToMap(Map serviceMethodsMap, List declaredServiceMethods) {
declaredServiceMethods.stream().forEach(method -> {
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/MethodStatComposite.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/MethodStatComposite.java
index a06751553e..b9717a5b84 100644
--- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/MethodStatComposite.java
+++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/MethodStatComposite.java
@@ -41,13 +41,11 @@ import java.util.concurrent.atomic.AtomicLong;
* the key will not be displayed when exporting (to be optimized)
*/
public class MethodStatComposite extends AbstractMetricsExport {
- private boolean serviceLevel;
private final AtomicBoolean samplesChanged = new AtomicBoolean(true);
public MethodStatComposite(ApplicationModel applicationModel) {
super(applicationModel);
- this.serviceLevel = MethodMetric.isServiceLevel(getApplicationModel());
}
private final Map> methodNumStats = new ConcurrentHashMap<>();
@@ -70,7 +68,8 @@ public class MethodStatComposite extends AbstractMetricsExport {
methodNumStats
.get(wrapper)
.computeIfAbsent(
- new MethodMetric(getApplicationModel(), invocation, serviceLevel), k -> new AtomicLong(0L));
+ new MethodMetric(getApplicationModel(), invocation, getServiceLevel()),
+ k -> new AtomicLong(0L));
samplesChanged.set(true);
}
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/RtStatComposite.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/RtStatComposite.java
index 8ac99e1667..0a3001f2ec 100644
--- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/RtStatComposite.java
+++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/RtStatComposite.java
@@ -50,13 +50,11 @@ import java.util.stream.Collectors;
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class RtStatComposite extends AbstractMetricsExport {
- private boolean serviceLevel;
private final AtomicBoolean samplesChanged = new AtomicBoolean(true);
public RtStatComposite(ApplicationModel applicationModel) {
super(applicationModel);
- this.serviceLevel = MethodMetric.isServiceLevel(getApplicationModel());
}
private final Map>> rtStats = new ConcurrentHashMap<>();
@@ -190,7 +188,7 @@ public class RtStatComposite extends AbstractMetricsExport {
List actions;
actions = new LinkedList<>();
for (LongContainer container : rtStats.get(registryOpType)) {
- MethodMetric key = new MethodMetric(getApplicationModel(), invocation, serviceLevel);
+ MethodMetric key = new MethodMetric(getApplicationModel(), invocation, getServiceLevel());
Number current = (Number) container.get(key);
if (current == null) {
container.putIfAbsent(key, container.getInitFunc().apply(key));
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsExport.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsExport.java
index 7ea0c64bd8..cb50129f89 100644
--- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsExport.java
+++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/report/AbstractMetricsExport.java
@@ -16,6 +16,7 @@
*/
package org.apache.dubbo.metrics.report;
+import org.apache.dubbo.metrics.model.MethodMetric;
import org.apache.dubbo.rpc.model.ApplicationModel;
/**
@@ -23,6 +24,8 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
*/
public abstract class AbstractMetricsExport implements MetricsExport {
+ private volatile Boolean serviceLevel;
+
private final ApplicationModel applicationModel;
public AbstractMetricsExport(ApplicationModel applicationModel) {
@@ -36,4 +39,19 @@ public abstract class AbstractMetricsExport implements MetricsExport {
public String getAppName() {
return getApplicationModel().getApplicationName();
}
+
+ protected boolean getServiceLevel() {
+ initServiceLevelConfig();
+ return this.serviceLevel;
+ }
+
+ private void initServiceLevelConfig() {
+ if (serviceLevel == null) {
+ synchronized (this) {
+ if (serviceLevel == null) {
+ this.serviceLevel = MethodMetric.isServiceLevel(getApplicationModel());
+ }
+ }
+ }
+ }
}
diff --git a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/SpringMvcRestProtocolTest.java b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/SpringMvcRestProtocolTest.java
index 274117756c..bfc43597c3 100644
--- a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/SpringMvcRestProtocolTest.java
+++ b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/SpringMvcRestProtocolTest.java
@@ -47,6 +47,9 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
+import org.springframework.aop.framework.AdvisedSupport;
+import org.springframework.aop.framework.AopProxy;
+import org.springframework.aop.framework.ProxyCreatorSupport;
import org.springframework.util.LinkedMultiValueMap;
import static org.apache.dubbo.remoting.Constants.SERVER_KEY;
@@ -398,6 +401,35 @@ public class SpringMvcRestProtocolTest {
exporter.unexport();
}
+ @Test
+ void testProxyDoubleCheck() {
+
+ ProxyCreatorSupport proxyCreatorSupport = new ProxyCreatorSupport();
+ AdvisedSupport advisedSupport = new AdvisedSupport();
+ advisedSupport.setTarget(getServerImpl());
+ AopProxy aopProxy = proxyCreatorSupport.getAopProxyFactory().createAopProxy(advisedSupport);
+ Object proxy = aopProxy.getProxy();
+ SpringRestDemoService server = (SpringRestDemoService) proxy;
+
+ URL nettyUrl = this.registerProvider(exportUrl, server, SpringRestDemoService.class);
+
+ Exporter exporter = getExport(nettyUrl, server);
+
+ SpringRestDemoService demoService = this.proxy.getProxy(protocol.refer(SpringRestDemoService.class, nettyUrl));
+
+ Integer result = demoService.primitiveInt(1, 2);
+ Long resultLong = demoService.primitiveLong(1, 2l);
+ long resultByte = demoService.primitiveByte((byte) 1, 2l);
+ long resultShort = demoService.primitiveShort((short) 1, 2l, 1);
+
+ assertThat(result, is(3));
+ assertThat(resultShort, is(3l));
+ assertThat(resultLong, is(3l));
+ assertThat(resultByte, is(3l));
+
+ exporter.unexport();
+ }
+
public static class TestExceptionMapper implements ExceptionHandler {
@Override
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/TriRpcStatus.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/TriRpcStatus.java
index abb5db671b..367cfc3491 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/TriRpcStatus.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/TriRpcStatus.java
@@ -19,6 +19,8 @@ package org.apache.dubbo.rpc;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.remoting.TimeoutException;
+import java.io.Serializable;
+
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.QueryStringDecoder;
import io.netty.handler.codec.http.QueryStringEncoder;
@@ -35,7 +37,7 @@ import static org.apache.dubbo.rpc.RpcException.UNKNOWN_EXCEPTION;
/**
* See https://github.com/grpc/grpc/blob/master/doc/statuscodes.md
*/
-public class TriRpcStatus {
+public class TriRpcStatus implements Serializable {
public static final TriRpcStatus OK = fromCode(Code.OK);
public static final TriRpcStatus UNKNOWN = fromCode(Code.UNKNOWN);
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java
index 21e1f85aee..0953833021 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java
@@ -144,12 +144,12 @@ public class TripleInvoker extends AbstractInvoker {
ConsumerModel consumerModel = (ConsumerModel)
(invocation.getServiceModel() != null ? invocation.getServiceModel() : getUrl().getServiceModel());
ServiceDescriptor serviceDescriptor = consumerModel.getServiceModel();
- final MethodDescriptor methodDescriptor;
- boolean genericCall = RpcUtils.isGenericCall(
- ReflectUtils.getDesc(invocation.getParameterTypes()), invocation.getMethodName());
- if (!genericCall) {
- methodDescriptor = serviceDescriptor.getMethod(invocation.getMethodName(), invocation.getParameterTypes());
- } else {
+ MethodDescriptor methodDescriptor =
+ serviceDescriptor.getMethod(invocation.getMethodName(), invocation.getParameterTypes());
+ if (methodDescriptor == null
+ && RpcUtils.isGenericCall(
+ ((RpcInvocation) invocation).getParameterTypesDesc(), invocation.getMethodName())) {
+ // Only reach when server generic
methodDescriptor = ServiceDescriptorInternalCache.genericService()
.getMethod(invocation.getMethodName(), invocation.getParameterTypes());
}
@@ -262,17 +262,7 @@ public class TripleInvoker extends AbstractInvoker {
if (methodDescriptor instanceof StubMethodDescriptor) {
pureArgument = invocation.getArguments()[0];
} else {
- if (methodDescriptor.isGeneric()) {
- Object[] args = new Object[3];
- args[0] = RpcUtils.getMethodName(invocation);
- args[1] = Arrays.stream(RpcUtils.getParameterTypes(invocation))
- .map(Class::getName)
- .toArray(String[]::new);
- args[2] = RpcUtils.getArguments(invocation);
- pureArgument = args;
- } else {
- pureArgument = invocation.getArguments();
- }
+ pureArgument = invocation.getArguments();
}
result = new AsyncRpcResult(future, invocation);
if (setFutureWhenSync || ((RpcInvocation) invocation).getInvokeMode() != InvokeMode.SYNC) {
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/TriRpcStatusTest.java b/dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/TriRpcStatusTest.java
index 0bbc325861..651e565488 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/TriRpcStatusTest.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/TriRpcStatusTest.java
@@ -19,6 +19,8 @@ package org.apache.dubbo.rpc;
import org.apache.dubbo.remoting.TimeoutException;
import org.apache.dubbo.rpc.TriRpcStatus.Code;
+import java.io.Serializable;
+
import io.netty.handler.codec.http.HttpResponseStatus;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -214,4 +216,11 @@ class TriRpcStatusTest {
Assertions.assertEquals(METHOD_NOT_FOUND, TriRpcStatus.triCodeToDubboCode(Code.UNIMPLEMENTED));
Assertions.assertEquals(UNKNOWN_EXCEPTION, TriRpcStatus.triCodeToDubboCode(Code.UNKNOWN));
}
+
+ @Test
+ void testSerializable() {
+ TriRpcStatus status = TriRpcStatus.INTERNAL.withDescription("test");
+ Assertions.assertInstanceOf(Serializable.class, status.asException());
+ Assertions.assertInstanceOf(Serializable.class, status.asException().getStatus());
+ }
}
diff --git a/pom.xml b/pom.xml
index 2391d78eb1..b181dcd8fd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,7 +150,7 @@
3.22.3
1.54.0
- 2.40.0
+ 2.41.0
check
1.0.0
2.38.0
@@ -869,6 +869,12 @@
src/main/java/org/apache/dubbo/common/logger/helpers/MessageFormatter.java
src/main/java/org/apache/dubbo/maven/plugin/protoc/DubboProtocCompilerMojo.java
src/main/java/org/apache/dubbo/gen/utils/ProtoTypeMap.java
+ **/TripleWrapper.java
+ **/com/google/rpc/**
+ **/io/grpc/**
+ **/istio/**
+ **/org/apache/dubbo/auth/v1alpha1/**
+ **/demo/hello/**
${palantirJavaFormat.version}