From 0c6b1ee17ada37b1363421f29cc6275dc27d716e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Aug 2023 16:04:37 +0800 Subject: [PATCH 01/21] Bump netty4_version from 4.1.95.Final to 4.1.96.Final (#12820) Bumps `netty4_version` from 4.1.95.Final to 4.1.96.Final. Updates `io.netty:netty-all` from 4.1.95.Final to 4.1.96.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.95.Final...netty-4.1.96.Final) Updates `io.netty:netty-bom` from 4.1.95.Final to 4.1.96.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.95.Final...netty-4.1.96.Final) --- updated-dependencies: - dependency-name: io.netty:netty-all dependency-type: direct:development update-type: version-update:semver-patch - dependency-name: io.netty:netty-bom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-dependencies-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index 12cc809b81..aad35387e5 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -96,7 +96,7 @@ 3.29.2-GA 1.14.6 3.2.10.Final - 4.1.95.Final + 4.1.96.Final 2.2.1 2.4.4 4.5.14 From c2352df095c86b50496eea7d31d569fe02f8ebac Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Wed, 23 Aug 2023 10:19:10 +0800 Subject: [PATCH 02/21] Fix injvm params error (#12938) --- .../rpc/protocol/injvm/InjvmInvoker.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java b/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java index ea28e91090..0ebdca71e8 100644 --- a/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java +++ b/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java @@ -20,6 +20,7 @@ import org.apache.dubbo.common.URL; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.threadlocal.InternalThreadLocalMap; import org.apache.dubbo.common.threadpool.manager.ExecutorRepository; +import org.apache.dubbo.common.url.component.DubboServiceAddressURL; import org.apache.dubbo.common.utils.ArrayUtils; import org.apache.dubbo.common.utils.ExecutorUtil; import org.apache.dubbo.common.utils.ReflectUtils; @@ -62,6 +63,9 @@ public class InjvmInvoker extends AbstractInvoker { private final Map> exporterMap; + private volatile Exporter exporter = null; + private volatile URL consumerUrl = null; + private final ExecutorRepository executorRepository; private final ParamDeepCopyUtil paramDeepCopyUtil; @@ -92,9 +96,11 @@ public class InjvmInvoker extends AbstractInvoker { @Override public Result doInvoke(Invocation invocation) throws Throwable { - Exporter exporter = InjvmProtocol.getExporter(exporterMap, getUrl()); if (exporter == null) { - throw new RpcException("Service [" + key + "] not found."); + exporter = InjvmProtocol.getExporter(exporterMap, getUrl()); + if (exporter == null) { + throw new RpcException("Service [" + key + "] not found."); + } } // Solve local exposure, the server opens the token, and the client call fails. Invoker invoker = exporter.getInvoker(); @@ -103,8 +109,12 @@ public class InjvmInvoker extends AbstractInvoker { if (serverHasToken) { invocation.setAttachment(Constants.TOKEN_KEY, serverURL.getParameter(Constants.TOKEN_KEY)); } + if (consumerUrl == null) { + // no need to sync, multi-objects is acceptable and will be gc-ed. + consumerUrl = new DubboServiceAddressURL(serverURL.getUrlAddress(), serverURL.getUrlParam(), getUrl(), null); + } - int timeout = RpcUtils.calculateTimeout(getUrl(), invocation, RpcUtils.getMethodName(invocation), DEFAULT_TIMEOUT); + int timeout = RpcUtils.calculateTimeout(consumerUrl, invocation, RpcUtils.getMethodName(invocation), DEFAULT_TIMEOUT); if (timeout <= 0) { return AsyncRpcResult.newDefaultAsyncResult(new RpcException(RpcException.TIMEOUT_TERMINATE, "No time left for making the following call: " + invocation.getServiceName() + "." @@ -242,7 +252,7 @@ public class InjvmInvoker extends AbstractInvoker { if (pts != null && args != null && pts.length == args.length) { realArgument = new Object[pts.length]; for (int i = 0; i < pts.length; i++) { - realArgument[i] = paramDeepCopyUtil.copy(getUrl(), args[i], pts[i]); + realArgument[i] = paramDeepCopyUtil.copy(consumerUrl, args[i], pts[i]); } } if (realArgument == null) { @@ -273,7 +283,7 @@ public class InjvmInvoker extends AbstractInvoker { Class returnType = getReturnType(consumerServiceModel, invocation.getMethodName(), desc); if (returnType != null) { Thread.currentThread().setContextClassLoader(consumerServiceModel.getClassLoader()); - value = paramDeepCopyUtil.copy(getUrl(), originValue, returnType); + value = paramDeepCopyUtil.copy(consumerUrl, originValue, returnType); } } return value; From 9d7c1b62bd301b467fc6a16b8f2547ddb19c669f Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Wed, 23 Aug 2023 11:15:49 +0800 Subject: [PATCH 03/21] Revert ":zap: avoid use string.format (#12816)" This reverts commit bac06929f21e42ba8fc574f3e829341432d571e2. --- .../dubbo/metrics/model/key/MetricsKey.java | 165 +++++++++--------- .../metrics/model/key/MetricsKeyWrapper.java | 2 +- .../collector/RegistryMetricsTest.java | 7 +- 3 files changed, 84 insertions(+), 90 deletions(-) diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java index b7608a6d9f..6b5329edc2 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java @@ -17,136 +17,131 @@ package org.apache.dubbo.metrics.model.key; -/** - * Please follow a unified naming format as follows: - * dubbo_type_action_unit_otherfun - */ public enum MetricsKey { - APPLICATION_METRIC_INFO("application.info.total", "Total Application Info"), + APPLICATION_METRIC_INFO("dubbo.application.info.total", "Total Application Info"), - CONFIGCENTER_METRIC_TOTAL("configcenter.total", "Config Changed Total"), + CONFIGCENTER_METRIC_TOTAL("dubbo.configcenter.total", "Config Changed Total"), // provider metrics key - METRIC_REQUESTS("requests.total", "Total Requests"), - METRIC_REQUESTS_SUCCEED("requests.succeed.total", "Total Succeed Requests"), - METRIC_REQUEST_BUSINESS_FAILED("requests.business.failed.total", "Total Failed Business Requests"), + METRIC_REQUESTS("dubbo.%s.requests.total", "Total Requests"), + METRIC_REQUESTS_SUCCEED("dubbo.%s.requests.succeed.total", "Total Succeed Requests"), + METRIC_REQUEST_BUSINESS_FAILED("dubbo.%s.requests.business.failed.total", "Total Failed Business Requests"), - METRIC_REQUESTS_PROCESSING("requests.processing.total", "Processing Requests"), - METRIC_REQUESTS_TIMEOUT("requests.timeout.total", "Total Timeout Failed Requests"), - METRIC_REQUESTS_LIMIT("requests.limit.total", "Total Limit Failed Requests"), - METRIC_REQUESTS_FAILED("requests.unknown.failed.total", "Total Unknown Failed Requests"), - METRIC_REQUESTS_TOTAL_FAILED("requests.failed.total", "Total Failed Requests"), - METRIC_REQUESTS_NETWORK_FAILED("requests.failed.network.total", "Total network Failed Requests"), - METRIC_REQUESTS_SERVICE_UNAVAILABLE_FAILED("requests.failed.service.unavailable.total", "Total Service Unavailable Failed Requests"), - METRIC_REQUESTS_CODEC_FAILED("requests.failed.codec.total", "Total Codec Failed Requests"), + METRIC_REQUESTS_PROCESSING("dubbo.%s.requests.processing.total", "Processing Requests"), + METRIC_REQUESTS_TIMEOUT("dubbo.%s.requests.timeout.total", "Total Timeout Failed Requests"), + METRIC_REQUESTS_LIMIT("dubbo.%s.requests.limit.total", "Total Limit Failed Requests"), + METRIC_REQUESTS_FAILED("dubbo.%s.requests.unknown.failed.total", "Total Unknown Failed Requests"), + METRIC_REQUESTS_TOTAL_FAILED("dubbo.%s.requests.failed.total", "Total Failed Requests"), + METRIC_REQUESTS_NETWORK_FAILED("dubbo.%s.requests.failed.network.total", "Total network Failed Requests"), + METRIC_REQUESTS_SERVICE_UNAVAILABLE_FAILED("dubbo.%s.requests.failed.service.unavailable.total", "Total Service Unavailable Failed Requests"), + METRIC_REQUESTS_CODEC_FAILED("dubbo.%s.requests.failed.codec.total", "Total Codec Failed Requests"), - METRIC_REQUESTS_TOTAL_AGG("requests.total.aggregate", "Aggregated Total Requests"), - METRIC_REQUESTS_SUCCEED_AGG("requests.succeed.aggregate", "Aggregated Succeed Requests"), - METRIC_REQUESTS_FAILED_AGG("requests.failed.aggregate", "Aggregated Failed Requests"), - METRIC_REQUEST_BUSINESS_FAILED_AGG("requests.business.failed.aggregate", "Aggregated Business Failed Requests"), - METRIC_REQUESTS_TIMEOUT_AGG("requests.timeout.failed.aggregate", "Aggregated timeout Failed Requests"), - METRIC_REQUESTS_LIMIT_AGG("requests.limit.aggregate", "Aggregated limit Requests"), - METRIC_REQUESTS_TOTAL_FAILED_AGG("requests.failed.total.aggregate", "Aggregated failed total Requests"), - METRIC_REQUESTS_NETWORK_FAILED_AGG("requests.failed.network.total.aggregate", "Aggregated failed network total Requests"), - METRIC_REQUESTS_CODEC_FAILED_AGG("requests.failed.codec.total.aggregate", "Aggregated failed codec total Requests"), - METRIC_REQUESTS_TOTAL_SERVICE_UNAVAILABLE_FAILED_AGG("requests.failed.service.unavailable.total.aggregate", "Aggregated failed codec total Requests"), + METRIC_REQUESTS_TOTAL_AGG("dubbo.%s.requests.total.aggregate", "Aggregated Total Requests"), + METRIC_REQUESTS_SUCCEED_AGG("dubbo.%s.requests.succeed.aggregate", "Aggregated Succeed Requests"), + METRIC_REQUESTS_FAILED_AGG("dubbo.%s.requests.failed.aggregate", "Aggregated Failed Requests"), + METRIC_REQUEST_BUSINESS_FAILED_AGG("dubbo.%s.requests.business.failed.aggregate", "Aggregated Business Failed Requests"), + METRIC_REQUESTS_TIMEOUT_AGG("dubbo.%s.requests.timeout.failed.aggregate", "Aggregated timeout Failed Requests"), + METRIC_REQUESTS_LIMIT_AGG("dubbo.%s.requests.limit.aggregate", "Aggregated limit Requests"), + METRIC_REQUESTS_TOTAL_FAILED_AGG("dubbo.%s.requests.failed.total.aggregate", "Aggregated failed total Requests"), + METRIC_REQUESTS_NETWORK_FAILED_AGG("dubbo.%s.requests.failed.network.total.aggregate", "Aggregated failed network total Requests"), + METRIC_REQUESTS_CODEC_FAILED_AGG("dubbo.%s.requests.failed.codec.total.aggregate", "Aggregated failed codec total Requests"), + METRIC_REQUESTS_TOTAL_SERVICE_UNAVAILABLE_FAILED_AGG("dubbo.%s.requests.failed.service.unavailable.total.aggregate", "Aggregated failed codec total Requests"), - METRIC_QPS("qps.total", "Query Per Seconds"), - METRIC_RT_LAST("rt.milliseconds.last", "Last Response Time"), - METRIC_RT_MIN("rt.milliseconds.min", "Min Response Time"), - METRIC_RT_MAX("rt.milliseconds.max", "Max Response Time"), - METRIC_RT_SUM("rt.milliseconds.sum", "Sum Response Time"), - METRIC_RT_AVG("rt.milliseconds.avg", "Average Response Time"), - METRIC_RT_P99("rt.milliseconds.p99", "Response Time P99"), - METRIC_RT_P95("rt.milliseconds.p95", "Response Time P95"), - METRIC_RT_P90("rt.milliseconds.p90", "Response Time P90"), - METRIC_RT_P50("rt.milliseconds.p50", "Response Time P50"), - METRIC_RT_MIN_AGG("rt.milliseconds.min.aggregate", "Aggregated Min Response"), - METRIC_RT_MAX_AGG("rt.milliseconds.max.aggregate", "Aggregated Max Response"), - METRIC_RT_AVG_AGG("rt.milliseconds.avg.aggregate", "Aggregated Avg Response"), + METRIC_QPS("dubbo.%s.qps.total", "Query Per Seconds"), + METRIC_RT_LAST("dubbo.%s.rt.milliseconds.last", "Last Response Time"), + METRIC_RT_MIN("dubbo.%s.rt.milliseconds.min", "Min Response Time"), + METRIC_RT_MAX("dubbo.%s.rt.milliseconds.max", "Max Response Time"), + METRIC_RT_SUM("dubbo.%s.rt.milliseconds.sum", "Sum Response Time"), + METRIC_RT_AVG("dubbo.%s.rt.milliseconds.avg", "Average Response Time"), + METRIC_RT_P99("dubbo.%s.rt.milliseconds.p99", "Response Time P99"), + METRIC_RT_P95("dubbo.%s.rt.milliseconds.p95", "Response Time P95"), + METRIC_RT_P90("dubbo.%s.rt.milliseconds.p90", "Response Time P90"), + METRIC_RT_P50("dubbo.%s.rt.milliseconds.p50", "Response Time P50"), + METRIC_RT_MIN_AGG("dubbo.%s.rt.min.milliseconds.aggregate", "Aggregated Min Response"), + METRIC_RT_MAX_AGG("dubbo.%s.rt.max.milliseconds.aggregate", "Aggregated Max Response"), + METRIC_RT_AVG_AGG("dubbo.%s.rt.avg.milliseconds.aggregate", "Aggregated Avg Response"), // register metrics key - REGISTER_METRIC_REQUESTS("registry.register.requests.total", "Total Register Requests"), - REGISTER_METRIC_REQUESTS_SUCCEED("registry.register.requests.succeed.total", "Succeed Register Requests"), - REGISTER_METRIC_REQUESTS_FAILED("registry.register.requests.failed.total", "Failed Register Requests"), - METRIC_RT_HISTOGRAM("rt.milliseconds.histogram", "Response Time Histogram"), + REGISTER_METRIC_REQUESTS("dubbo.registry.register.requests.total", "Total Register Requests"), + REGISTER_METRIC_REQUESTS_SUCCEED("dubbo.registry.register.requests.succeed.total", "Succeed Register Requests"), + REGISTER_METRIC_REQUESTS_FAILED("dubbo.registry.register.requests.failed.total", "Failed Register Requests"), + METRIC_RT_HISTOGRAM("dubbo.%s.rt.milliseconds.histogram", "Response Time Histogram"), - GENERIC_METRIC_REQUESTS("requests.total", "Total %s Requests"), - GENERIC_METRIC_REQUESTS_SUCCEED("requests.succeed.total", "Succeed %s Requests"), - GENERIC_METRIC_REQUESTS_FAILED("requests.failed.total", "Failed %s Requests"), + GENERIC_METRIC_REQUESTS("dubbo.%s.requests.total", "Total %s Requests"), + GENERIC_METRIC_REQUESTS_SUCCEED("dubbo.%s.requests.succeed.total", "Succeed %s Requests"), + GENERIC_METRIC_REQUESTS_FAILED("dubbo.%s.requests.failed.total", "Failed %s Requests"), // subscribe metrics key - SUBSCRIBE_METRIC_NUM("registry.subscribe.num.total", "Total Subscribe Num"), - SUBSCRIBE_METRIC_NUM_SUCCEED("registry.subscribe.num.succeed.total", "Succeed Subscribe Num"), - SUBSCRIBE_METRIC_NUM_FAILED("registry.subscribe.num.failed.total", "Failed Subscribe Num"), + SUBSCRIBE_METRIC_NUM("dubbo.registry.subscribe.num.total", "Total Subscribe Num"), + SUBSCRIBE_METRIC_NUM_SUCCEED("dubbo.registry.subscribe.num.succeed.total", "Succeed Subscribe Num"), + SUBSCRIBE_METRIC_NUM_FAILED("dubbo.registry.subscribe.num.failed.total", "Failed Subscribe Num"), // directory metrics key - DIRECTORY_METRIC_NUM_ALL("registry.directory.num.all", "All Directory Urls"), - DIRECTORY_METRIC_NUM_VALID("registry.directory.num.valid.total", "Valid Directory Urls"), - DIRECTORY_METRIC_NUM_TO_RECONNECT("registry.directory.num.to_reconnect.total", "ToReconnect Directory Urls"), - DIRECTORY_METRIC_NUM_DISABLE("registry.directory.num.disable.total", "Disable Directory Urls"), + DIRECTORY_METRIC_NUM_ALL("dubbo.registry.directory.num.all", "All Directory Urls"), + DIRECTORY_METRIC_NUM_VALID("dubbo.registry.directory.num.valid.total", "Valid Directory Urls"), + DIRECTORY_METRIC_NUM_TO_RECONNECT("dubbo.registry.directory.num.to_reconnect.total", "ToReconnect Directory Urls"), + DIRECTORY_METRIC_NUM_DISABLE("dubbo.registry.directory.num.disable.total", "Disable Directory Urls"), - NOTIFY_METRIC_REQUESTS("registry.notify.requests.total", "Total Notify Requests"), - NOTIFY_METRIC_NUM_LAST("registry.notify.num.last", "Last Notify Nums"), + NOTIFY_METRIC_REQUESTS("dubbo.registry.notify.requests.total", "Total Notify Requests"), + NOTIFY_METRIC_NUM_LAST("dubbo.registry.notify.num.last", "Last Notify Nums"), - THREAD_POOL_CORE_SIZE("thread.pool.core.size", "Thread Pool Core Size"), - THREAD_POOL_LARGEST_SIZE("thread.pool.largest.size", "Thread Pool Largest Size"), - THREAD_POOL_MAX_SIZE("thread.pool.max.size", "Thread Pool Max Size"), - THREAD_POOL_ACTIVE_SIZE("thread.pool.active.size", "Thread Pool Active Size"), - THREAD_POOL_THREAD_COUNT("thread.pool.thread.count", "Thread Pool Thread Count"), - THREAD_POOL_QUEUE_SIZE("thread.pool.queue.size", "Thread Pool Queue Size"), - THREAD_POOL_THREAD_REJECT_COUNT("thread.pool.reject.thread.count", "Thread Pool Reject Thread Count"), + THREAD_POOL_CORE_SIZE("dubbo.thread.pool.core.size", "Thread Pool Core Size"), + THREAD_POOL_LARGEST_SIZE("dubbo.thread.pool.largest.size", "Thread Pool Largest Size"), + THREAD_POOL_MAX_SIZE("dubbo.thread.pool.max.size", "Thread Pool Max Size"), + THREAD_POOL_ACTIVE_SIZE("dubbo.thread.pool.active.size", "Thread Pool Active Size"), + THREAD_POOL_THREAD_COUNT("dubbo.thread.pool.thread.count", "Thread Pool Thread Count"), + THREAD_POOL_QUEUE_SIZE("dubbo.thread.pool.queue.size", "Thread Pool Queue Size"), + THREAD_POOL_THREAD_REJECT_COUNT("dubbo.thread.pool.reject.thread.count", "Thread Pool Reject Thread Count"), // metadata push metrics key - METADATA_PUSH_METRIC_NUM("metadata.push.num.total", "Total Push Num"), - METADATA_PUSH_METRIC_NUM_SUCCEED("metadata.push.num.succeed.total", "Succeed Push Num"), - METADATA_PUSH_METRIC_NUM_FAILED("metadata.push.num.failed.total", "Failed Push Num"), + METADATA_PUSH_METRIC_NUM("dubbo.metadata.push.num.total", "Total Push Num"), + METADATA_PUSH_METRIC_NUM_SUCCEED("dubbo.metadata.push.num.succeed.total", "Succeed Push Num"), + METADATA_PUSH_METRIC_NUM_FAILED("dubbo.metadata.push.num.failed.total", "Failed Push Num"), // metadata subscribe metrics key - METADATA_SUBSCRIBE_METRIC_NUM("metadata.subscribe.num.total", "Total Metadata Subscribe Num"), - METADATA_SUBSCRIBE_METRIC_NUM_SUCCEED("metadata.subscribe.num.succeed.total", "Succeed Metadata Subscribe Num"), - METADATA_SUBSCRIBE_METRIC_NUM_FAILED("metadata.subscribe.num.failed.total", "Failed Metadata Subscribe Num"), + METADATA_SUBSCRIBE_METRIC_NUM("dubbo.metadata.subscribe.num.total", "Total Metadata Subscribe Num"), + METADATA_SUBSCRIBE_METRIC_NUM_SUCCEED("dubbo.metadata.subscribe.num.succeed.total", "Succeed Metadata Subscribe Num"), + METADATA_SUBSCRIBE_METRIC_NUM_FAILED("dubbo.metadata.subscribe.num.failed.total", "Failed Metadata Subscribe Num"), // register service metrics key - SERVICE_REGISTER_METRIC_REQUESTS("registry.total", "Total Service-Level Register Requests"), - SERVICE_REGISTER_METRIC_REQUESTS_SUCCEED("registry.succeed.total", "Succeed Service-Level Register Requests"), - SERVICE_REGISTER_METRIC_REQUESTS_FAILED("registry.failed.total", "Failed Service-Level Register Requests"), + SERVICE_REGISTER_METRIC_REQUESTS("dubbo.registry.register.service.total", "Total Service-Level Register Requests"), + SERVICE_REGISTER_METRIC_REQUESTS_SUCCEED("dubbo.registry.register.service.succeed.total", "Succeed Service-Level Register Requests"), + SERVICE_REGISTER_METRIC_REQUESTS_FAILED("dubbo.registry.register.service.failed.total", "Failed Service-Level Register Requests"), // subscribe metrics key - SERVICE_SUBSCRIBE_METRIC_NUM("registry.subscribe.service.num.total", "Total Service-Level Subscribe Num"), - SERVICE_SUBSCRIBE_METRIC_NUM_SUCCEED("registry.subscribe.service.num.succeed.total", "Succeed Service-Level Num"), - SERVICE_SUBSCRIBE_METRIC_NUM_FAILED("registry.subscribe.service.num.failed.total", "Failed Service-Level Num"), + SERVICE_SUBSCRIBE_METRIC_NUM("dubbo.registry.subscribe.service.num.total", "Total Service-Level Subscribe Num"), + SERVICE_SUBSCRIBE_METRIC_NUM_SUCCEED("dubbo.registry.subscribe.service.num.succeed.total", "Succeed Service-Level Num"), + SERVICE_SUBSCRIBE_METRIC_NUM_FAILED("dubbo.registry.subscribe.service.num.failed.total", "Failed Service-Level Num"), // store provider metadata service key - STORE_PROVIDER_METADATA("metadata.store.provider.total", "Store Provider Metadata"), + STORE_PROVIDER_METADATA("dubbo.metadata.store.provider.total", "Store Provider Metadata"), - STORE_PROVIDER_METADATA_SUCCEED("metadata.store.provider.succeed.total", "Succeed Store Provider Metadata"), + STORE_PROVIDER_METADATA_SUCCEED("dubbo.metadata.store.provider.succeed.total", "Succeed Store Provider Metadata"), - STORE_PROVIDER_METADATA_FAILED("metadata.store.provider.failed.total", "Failed Store Provider Metadata"), + STORE_PROVIDER_METADATA_FAILED("dubbo.metadata.store.provider.failed.total", "Failed Store Provider Metadata"), METADATA_GIT_COMMITID_METRIC("git.commit.id", "Git Commit Id Metrics"), // consumer metrics key - INVOKER_NO_AVAILABLE_COUNT("consumer.invoker.no.available.count", "Request Throw No Invoker Available Exception Count"), + INVOKER_NO_AVAILABLE_COUNT("dubbo.consumer.invoker.no.available.count", "Request Throw No Invoker Available Exception Count"), ; - private String nameSuffix; + private String name; private String description; public final String getName() { - return "dubbo." + nameSuffix; + return this.name; } public final String getNameByType(String type) { - return "dubbo." + type + "." + nameSuffix; + return String.format(name, type); } public final String getDescription() { return this.description; } - - MetricsKey(String nameSuffix, String description) { - this.nameSuffix = nameSuffix; + MetricsKey(String name, String description) { + this.name = name; this.description = description; } } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKeyWrapper.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKeyWrapper.java index 042bfd0e3c..095cc5f305 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKeyWrapper.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKeyWrapper.java @@ -85,7 +85,7 @@ public class MetricsKeyWrapper { return metricsKey.getName(); } try { - return metricsKey.getNameByType(getType()); + return String.format(metricsKey.getName(), getType()); } catch (Exception ignore) { return metricsKey.getName(); } diff --git a/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsTest.java b/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsTest.java index 3187161fad..5610bef232 100644 --- a/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsTest.java +++ b/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsTest.java @@ -25,7 +25,6 @@ import org.apache.dubbo.config.nested.AggregationConfig; import org.apache.dubbo.metrics.model.key.MetricsKey; import org.apache.dubbo.metrics.model.sample.GaugeMetricSample; import org.apache.dubbo.metrics.model.sample.MetricSample; -import org.apache.dubbo.metrics.registry.RegistryMetricsConstants; import org.apache.dubbo.metrics.registry.collector.RegistryMetricsCollector; import org.apache.dubbo.metrics.registry.event.RegistryEvent; import org.apache.dubbo.rpc.model.ApplicationModel; @@ -222,9 +221,9 @@ public class RegistryMetricsTest { } List samples = collector.collect(); - GaugeMetricSample succeedRequests = getSample(MetricsKey.SERVICE_REGISTER_METRIC_REQUESTS_SUCCEED.getNameByType(RegistryMetricsConstants.OP_TYPE_REGISTER_SERVICE.getType()), samples); - GaugeMetricSample failedRequests = getSample(MetricsKey.SERVICE_REGISTER_METRIC_REQUESTS_FAILED.getNameByType(RegistryMetricsConstants.OP_TYPE_REGISTER_SERVICE.getType()), samples); - GaugeMetricSample totalRequests = getSample(MetricsKey.SERVICE_REGISTER_METRIC_REQUESTS.getNameByType(RegistryMetricsConstants.OP_TYPE_REGISTER_SERVICE.getType()), samples); + GaugeMetricSample succeedRequests = getSample(MetricsKey.SERVICE_REGISTER_METRIC_REQUESTS_SUCCEED.getName(), samples); + GaugeMetricSample failedRequests = getSample(MetricsKey.SERVICE_REGISTER_METRIC_REQUESTS_FAILED.getName(), samples); + GaugeMetricSample totalRequests = getSample(MetricsKey.SERVICE_REGISTER_METRIC_REQUESTS.getName(), samples); Assertions.assertEquals(5L, succeedRequests.applyAsLong()); Assertions.assertEquals(5L, failedRequests.applyAsLong()); From 0de4c395e895f4f6034e433553dafc767e5a31b0 Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Wed, 23 Aug 2023 11:27:10 +0800 Subject: [PATCH 04/21] Fix shouldReconnect check (#12949) --- .../support/header/HeaderExchangeClient.java | 4 +- .../header/HeaderExchangeClientTest.java | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClientTest.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java index 0adf656604..6b9dd53e95 100644 --- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java +++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java @@ -248,8 +248,8 @@ public class HeaderExchangeClient implements ExchangeClient { return Math.max(leastReconnectDuration, tick); } - private boolean shouldReconnect(URL url) { - return url.getParameter(Constants.RECONNECT_KEY, true); + protected boolean shouldReconnect(URL url) { + return !Boolean.FALSE.toString().equalsIgnoreCase(url.getParameter(Constants.RECONNECT_KEY)); } @Override diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClientTest.java b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClientTest.java new file mode 100644 index 0000000000..7fad611e7f --- /dev/null +++ b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClientTest.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.dubbo.remoting.exchange.support.header; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.remoting.Client; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +public class HeaderExchangeClientTest { + @Test + void testReconnect() { + HeaderExchangeClient headerExchangeClient = new HeaderExchangeClient(Mockito.mock(Client.class), false); + + Assertions.assertTrue(headerExchangeClient.shouldReconnect(URL.valueOf("localhost"))); + Assertions.assertTrue(headerExchangeClient.shouldReconnect(URL.valueOf("localhost?reconnect=true"))); + Assertions.assertTrue(headerExchangeClient.shouldReconnect(URL.valueOf("localhost?reconnect=tRue"))); + Assertions.assertTrue(headerExchangeClient.shouldReconnect(URL.valueOf("localhost?reconnect=30000"))); + Assertions.assertTrue(headerExchangeClient.shouldReconnect(URL.valueOf("localhost?reconnect=0"))); + Assertions.assertTrue(headerExchangeClient.shouldReconnect(URL.valueOf("localhost?reconnect=-1"))); + Assertions.assertFalse(headerExchangeClient.shouldReconnect(URL.valueOf("localhost?reconnect=false"))); + Assertions.assertFalse(headerExchangeClient.shouldReconnect(URL.valueOf("localhost?reconnect=FALSE"))); + } +} From f5cc40c56a9f522ea2ef053b467026566806a07d Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Wed, 23 Aug 2023 15:39:52 +0800 Subject: [PATCH 05/21] Fix static directory metrics label (#12951) * Fix static directory metrics label * Fix import --- .../dubbo/rpc/cluster/directory/StaticDirectory.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java index d5ec1e512b..6fae2eeb8f 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java @@ -27,11 +27,12 @@ import org.apache.dubbo.rpc.cluster.RouterChain; import org.apache.dubbo.rpc.cluster.SingleRouterChain; import org.apache.dubbo.rpc.cluster.router.state.BitList; -import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import static org.apache.dubbo.common.constants.LoggerCodeConstants.CLUSTER_FAILED_SITE_SELECTION; +import static org.apache.dubbo.common.constants.RegistryConstants.REGISTER_MODE_KEY; import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY; /** @@ -130,6 +131,9 @@ public class StaticDirectory extends AbstractDirectory { @Override protected Map getDirectoryMeta() { - return Collections.singletonMap(REGISTRY_KEY, "static"); + Map metas = new HashMap<>(); + metas.put(REGISTRY_KEY, "static"); + metas.put(REGISTER_MODE_KEY, "static"); + return metas; } } From 2a5b437d58ba60cd51d39a040b6d39c8697f9d50 Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Wed, 23 Aug 2023 19:00:07 +0800 Subject: [PATCH 06/21] Support check if qos server is started (#12952) --- .../dubbo/common/constants/QosConstants.java | 2 ++ .../apache/dubbo/config/ApplicationConfig.java | 15 +++++++++++++++ .../src/main/resources/META-INF/dubbo.xsd | 5 +++++ .../dubbo/qos/protocol/QosProtocolWrapper.java | 5 +++++ 4 files changed, 27 insertions(+) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/QosConstants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/QosConstants.java index 29b1993ca6..01286e6e4f 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/QosConstants.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/QosConstants.java @@ -24,6 +24,8 @@ public interface QosConstants { String QOS_ENABLE = "qos.enable"; + String QOS_CHECK = "qos.check"; + String QOS_HOST = "qos.host"; String QOS_PORT = "qos.port"; diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java index 7336c6d144..f5da6adb77 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ApplicationConfig.java @@ -58,6 +58,7 @@ import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP_W import static org.apache.dubbo.common.constants.QosConstants.ANONYMOUS_ACCESS_ALLOW_COMMANDS; import static org.apache.dubbo.common.constants.QosConstants.ANONYMOUS_ACCESS_PERMISSION_LEVEL; import static org.apache.dubbo.common.constants.QosConstants.ANONYMOUS_ACCESS_PERMISSION_LEVEL_COMPATIBLE; +import static org.apache.dubbo.common.constants.QosConstants.QOS_CHECK; import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE; import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE_COMPATIBLE; import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST; @@ -146,6 +147,11 @@ public class ApplicationConfig extends AbstractConfig { */ private Boolean qosEnable; + /** + * Whether qos should start success or not, will check qosEnable first + */ + private Boolean qosCheck; + /** * The qos host to listen */ @@ -433,6 +439,15 @@ public class ApplicationConfig extends AbstractConfig { this.qosEnable = qosEnable; } + @Parameter(key = QOS_CHECK) + public Boolean getQosCheck() { + return qosCheck; + } + + public void setQosCheck(Boolean qosCheck) { + this.qosCheck = qosCheck; + } + @Parameter(key = QOS_HOST) public String getQosHost() { return qosHost; diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd index a2bcbee0bd..01b0ca0267 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd @@ -520,6 +520,11 @@ + + + + + diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java index a06b246ab4..d45ee69749 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java @@ -40,6 +40,7 @@ import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP; import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP_WHITELIST; import static org.apache.dubbo.common.constants.QosConstants.ANONYMOUS_ACCESS_ALLOW_COMMANDS; import static org.apache.dubbo.common.constants.QosConstants.ANONYMOUS_ACCESS_PERMISSION_LEVEL; +import static org.apache.dubbo.common.constants.QosConstants.QOS_CHECK; import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE; import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST; import static org.apache.dubbo.common.constants.QosConstants.QOS_PORT; @@ -131,6 +132,10 @@ public class QosProtocolWrapper implements Protocol, ScopeModelAware { } catch (Throwable throwable) { logger.warn(QOS_FAILED_START_SERVER, "", "", "Fail to start qos server: ", throwable); + boolean qosCheck = url.getParameter(QOS_CHECK, false); + if (qosCheck) { + throw new IllegalStateException("Fail to start qos server: " + throwable.getMessage(), throwable); + } } } From 711de7c2a0f8ca01b3f0e7ef5a8e96495a10bb0a Mon Sep 17 00:00:00 2001 From: robin977 Date: Sat, 26 Aug 2023 20:54:08 +0800 Subject: [PATCH 07/21] Adds metrics initialization metrics for the service interface(#12850) (#12892) * Fixed the observable collection thread pool indicator * Adds metrics initialization metrics for the service interface(#12850) --------- Co-authored-by: robin Co-authored-by: songxiaosheng Co-authored-by: Albumen Kevin --- .../apache/dubbo/config/ServiceConfig.java | 14 ++ .../collector/CombMetricsCollector.java | 6 + .../collector/MethodMetricsCollector.java | 2 + .../metrics/collector/MetricsCollector.java | 3 + .../dubbo/metrics/data/BaseStatComposite.java | 4 + .../metrics/data/MethodStatComposite.java | 8 + .../dubbo/metrics/event/MetricsInitEvent.java | 48 ++++++ .../event/SimpleMetricsEventMulticaster.java | 1 + .../metrics/listener/MetricsListener.java | 1 - .../dubbo/metrics/model/MetricsSupport.java | 5 + .../dubbo/metrics/DefaultConstants.java | 25 +++ .../collector/AggregateMetricsCollector.java | 40 ++++- .../collector/DefaultMetricsCollector.java | 33 +++- .../MetricThreadPoolExhaustedListener.java | 2 +- .../sample/SimpleMetricsCountSampler.java | 4 + .../ThreadRejectMetricsCountSampler.java | 1 + .../collector/InitServiceMetricsTest.java | 152 ++++++++++++++++++ 17 files changed, 345 insertions(+), 4 deletions(-) create mode 100644 dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsInitEvent.java create mode 100644 dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/InitServiceMetricsTest.java diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java index 1e01c1870a..2c8d39c4f1 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java @@ -38,11 +38,14 @@ import org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker; import org.apache.dubbo.config.support.Parameter; import org.apache.dubbo.config.utils.ConfigValidationUtils; import org.apache.dubbo.metadata.ServiceNameMapping; +import org.apache.dubbo.metrics.event.MetricsEventBus; +import org.apache.dubbo.metrics.event.MetricsInitEvent; import org.apache.dubbo.registry.client.metadata.MetadataUtils; import org.apache.dubbo.rpc.Exporter; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Protocol; import org.apache.dubbo.rpc.ProxyFactory; +import org.apache.dubbo.rpc.RpcInvocation; import org.apache.dubbo.rpc.ServerService; import org.apache.dubbo.rpc.cluster.ConfiguratorFactory; import org.apache.dubbo.rpc.model.ModuleModel; @@ -60,6 +63,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.TreeSet; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -542,6 +546,16 @@ public class ServiceConfig extends ServiceConfigBase { processServiceExecutor(url); exportUrl(url, registryURLs, registerType); + + initServiceMethodMetrics(url); + } + + private void initServiceMethodMetrics(URL url) { + String [] methods = Optional.ofNullable(url.getParameter(METHODS_KEY)).map(i->i.split(",")).orElse( new String[]{}); + Arrays.stream(methods).forEach( method-> { + RpcInvocation invocation = new RpcInvocation(url.getServiceKey(),url.getServiceModel(),method,interfaceName, url.getProtocolServiceKey(), null, null,null,null,null,null); + MetricsEventBus.publish(MetricsInitEvent.toMetricsInitEvent(application.getApplicationModel(),invocation)); + }); } private void processServiceExecutor(URL url) { diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/CombMetricsCollector.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/CombMetricsCollector.java index 66fb5f2aee..181d51e106 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/CombMetricsCollector.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/CombMetricsCollector.java @@ -85,6 +85,12 @@ public abstract class CombMetricsCollector extends A this.stats.incrementMethodKey(wrapper, methodMetric, size); } + + @Override + public void init(Invocation invocation, MetricsKeyWrapper wrapper) { + this.stats.initMethodKey(wrapper, invocation); + } + protected List export(MetricsCategory category) { return stats.export(category); } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/MethodMetricsCollector.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/MethodMetricsCollector.java index d62bab1820..db07746bc8 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/MethodMetricsCollector.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/MethodMetricsCollector.java @@ -30,5 +30,7 @@ public interface MethodMetricsCollector extends Metr void increment(MethodMetric methodMetric, MetricsKeyWrapper wrapper, int size); void addMethodRt(Invocation invocation, String registryOpType, Long responseTime); + + void init(Invocation invocation, MetricsKeyWrapper wrapper); } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/MetricsCollector.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/MetricsCollector.java index 8675faf5f3..f8b676cd3b 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/MetricsCollector.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/collector/MetricsCollector.java @@ -18,6 +18,7 @@ package org.apache.dubbo.metrics.collector; import org.apache.dubbo.common.extension.SPI; +import org.apache.dubbo.metrics.event.MetricsEvent; import org.apache.dubbo.metrics.event.TimeCounterEvent; import org.apache.dubbo.metrics.listener.MetricsLifeListener; import org.apache.dubbo.metrics.model.sample.MetricSample; @@ -42,4 +43,6 @@ public interface MetricsCollector extends MetricsLif */ List collect(); + default void initMetrics(MetricsEvent event) {}; + } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/BaseStatComposite.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/BaseStatComposite.java index ef987e7e15..6dde0939bf 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/BaseStatComposite.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/data/BaseStatComposite.java @@ -112,6 +112,10 @@ public abstract class BaseStatComposite implements MetricsExport { methodStatComposite.incrementMethodKey(metricsKeyWrapper, methodMetric, size); } + public void initMethodKey(MetricsKeyWrapper metricsKeyWrapper, Invocation invocation) { + methodStatComposite.initMethodKey(metricsKeyWrapper, invocation); + } + @Override public List export(MetricsCategory category) { List list = new ArrayList<>(); 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 527fb31bf3..d6cba3ee50 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 @@ -26,6 +26,7 @@ import org.apache.dubbo.metrics.model.sample.CounterMetricSample; import org.apache.dubbo.metrics.model.sample.GaugeMetricSample; import org.apache.dubbo.metrics.model.sample.MetricSample; import org.apache.dubbo.metrics.report.AbstractMetricsExport; +import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.model.ApplicationModel; import java.util.ArrayList; @@ -54,6 +55,13 @@ public class MethodStatComposite extends AbstractMetricsExport { metricsKeyWrappers.forEach(appKey -> methodNumStats.put(appKey, new ConcurrentHashMap<>())); } + public void initMethodKey(MetricsKeyWrapper wrapper, Invocation invocation) { + if (!methodNumStats.containsKey(wrapper)) { + return; + } + methodNumStats.get(wrapper).computeIfAbsent(new MethodMetric(getApplicationModel(), invocation), k -> new AtomicLong(0L)); + } + public void incrementMethodKey(MetricsKeyWrapper wrapper, MethodMetric methodMetric, int size) { if (!methodNumStats.containsKey(wrapper)) { return; diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsInitEvent.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsInitEvent.java new file mode 100644 index 0000000000..8a1d1a8a62 --- /dev/null +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsInitEvent.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dubbo.metrics.event; +import org.apache.dubbo.metrics.MetricsConstants; +import org.apache.dubbo.metrics.model.MethodMetric; +import org.apache.dubbo.metrics.model.MetricsSupport; +import org.apache.dubbo.metrics.model.key.MetricsLevel; +import org.apache.dubbo.metrics.model.key.TypeWrapper; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.model.ApplicationModel; +import static org.apache.dubbo.metrics.MetricsConstants.ATTACHMENT_KEY_SERVICE; +import static org.apache.dubbo.metrics.model.key.MetricsKey.METRIC_REQUESTS; + +public class MetricsInitEvent extends TimeCounterEvent { + + private static final TypeWrapper METRIC_EVENT = new TypeWrapper(MetricsLevel.SERVICE, METRIC_REQUESTS); + + public MetricsInitEvent(ApplicationModel source,TypeWrapper typeWrapper) { + super(source,typeWrapper); + } + + public static MetricsInitEvent toMetricsInitEvent(ApplicationModel applicationModel, Invocation invocation) { + MethodMetric methodMetric = new MethodMetric(applicationModel, invocation); + MetricsInitEvent initEvent = new MetricsInitEvent(applicationModel, METRIC_EVENT); + initEvent.putAttachment(MetricsConstants.INVOCATION, invocation); + initEvent.putAttachment(MetricsConstants.METHOD_METRICS, methodMetric); + initEvent.putAttachment(ATTACHMENT_KEY_SERVICE, MetricsSupport.getInterfaceName(invocation)); + initEvent.putAttachment(MetricsConstants.INVOCATION_SIDE, MetricsSupport.getSide(invocation)); + return initEvent; + } + + +} diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/SimpleMetricsEventMulticaster.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/SimpleMetricsEventMulticaster.java index e89483f8c6..a88745ca46 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/SimpleMetricsEventMulticaster.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/SimpleMetricsEventMulticaster.java @@ -43,6 +43,7 @@ public class SimpleMetricsEventMulticaster implements MetricsEventMulticaster { if (event instanceof EmptyEvent) { return; } + if (validateIfApplicationConfigExist(event)) return; for (MetricsListener listener : listeners) { if (listener.isSupport(event)) { diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java index 4e355802db..3411e6f046 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java @@ -35,5 +35,4 @@ public interface MetricsListener { */ void onEvent(E event); - } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MetricsSupport.java b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MetricsSupport.java index 404018dfb5..dfaec1fb8e 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MetricsSupport.java +++ b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MetricsSupport.java @@ -222,6 +222,11 @@ public class MetricsSupport { collector.increment(event.getAttachmentValue(METHOD_METRICS), new MetricsKeyWrapper(metricsKey, placeType), SELF_INCREMENT_SIZE); } + + public static void init(MetricsKey metricsKey, MetricsPlaceValue placeType, MethodMetricsCollector collector, MetricsEvent event) { + collector.init(event.getAttachmentValue(INVOCATION), new MetricsKeyWrapper(metricsKey, placeType)); + } + /** * Dec method num */ diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/DefaultConstants.java b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/DefaultConstants.java index 4bb9245e58..a59832fd0c 100644 --- a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/DefaultConstants.java +++ b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/DefaultConstants.java @@ -18,6 +18,7 @@ package org.apache.dubbo.metrics; import org.apache.dubbo.common.constants.CommonConstants; +import org.apache.dubbo.metrics.model.key.MetricsKey; import org.apache.dubbo.metrics.model.key.MetricsKeyWrapper; import org.apache.dubbo.metrics.model.key.MetricsLevel; import org.apache.dubbo.metrics.model.key.MetricsPlaceValue; @@ -69,4 +70,28 @@ public interface DefaultConstants { new MetricsKeyWrapper(METRIC_REQUESTS_CODEC_FAILED, MetricsPlaceValue.of(CommonConstants.PROVIDER, MetricsLevel.METHOD)), new MetricsKeyWrapper(METRIC_REQUESTS_CODEC_FAILED, MetricsPlaceValue.of(CommonConstants.CONSUMER, MetricsLevel.METHOD)) ); + + List INIT_AGG_METHOD_KEYS = Arrays.asList( + MetricsKey.METRIC_REQUESTS_TOTAL_AGG, + MetricsKey.METRIC_REQUESTS_SUCCEED_AGG, + MetricsKey.METRIC_REQUESTS_FAILED_AGG, + MetricsKey.METRIC_REQUEST_BUSINESS_FAILED_AGG, + MetricsKey.METRIC_REQUESTS_TIMEOUT_AGG, + MetricsKey.METRIC_REQUESTS_LIMIT_AGG, + MetricsKey.METRIC_REQUESTS_TOTAL_FAILED_AGG, + MetricsKey.METRIC_REQUESTS_NETWORK_FAILED_AGG, + MetricsKey.METRIC_REQUESTS_CODEC_FAILED_AGG, + MetricsKey.METRIC_REQUESTS_TOTAL_SERVICE_UNAVAILABLE_FAILED_AGG + ); + + List INIT_DEFAULT_METHOD_KEYS = Arrays.asList( + MetricsKey.METRIC_REQUESTS, + MetricsKey.METRIC_REQUESTS_PROCESSING, + MetricsKey.METRIC_REQUESTS_FAILED_AGG, + MetricsKey.METRIC_REQUESTS_SUCCEED, + MetricsKey.METRIC_REQUESTS_TOTAL_FAILED, + MetricsKey.METRIC_REQUEST_BUSINESS_FAILED + ); + + } diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollector.java b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollector.java index 7fbd4af06e..2f04416bf2 100644 --- a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollector.java +++ b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollector.java @@ -46,6 +46,7 @@ import java.util.concurrent.ConcurrentMap; import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE; import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE; +import static org.apache.dubbo.metrics.DefaultConstants.INIT_AGG_METHOD_KEYS; import static org.apache.dubbo.metrics.DefaultConstants.METRIC_THROWABLE; import static org.apache.dubbo.metrics.model.MetricsCategory.QPS; import static org.apache.dubbo.metrics.model.MetricsCategory.REQUESTS; @@ -55,7 +56,7 @@ import static org.apache.dubbo.metrics.model.MetricsCategory.RT; * Aggregation metrics collector implementation of {@link MetricsCollector}. * This collector only enabled when metrics aggregation config is enabled. */ -public class AggregateMetricsCollector implements MetricsCollector { +public class AggregateMetricsCollector implements MetricsCollector{ private int bucketNum = DEFAULT_BUCKET_NUM; private int timeWindowSeconds = DEFAULT_TIME_WINDOW_SECONDS; private int qpsTimeWindowMillSeconds = DEFAULT_QPS_TIME_WINDOW_MILL_SECONDS; @@ -262,4 +263,41 @@ public class AggregateMetricsCollector implements MetricsCollector applicationModel.getBeanFactory().getBean(DefaultMetricsCollector.class).getEventMulticaster().addListener(this); } + + @Override + public void initMetrics(MetricsEvent event) { + MethodMetric metric = new MethodMetric(applicationModel, event.getAttachmentValue(MetricsConstants.INVOCATION)); + initMethodMetric(event); + initQpsMetric(metric); + initRtMetric(metric); + initRtAgrMetric(metric); + } + + public void initMethodMetric(MetricsEvent event){ + INIT_AGG_METHOD_KEYS.stream().forEach(key->initWindowCounter(event,key)); + } + + public void initQpsMetric(MethodMetric metric){ + ConcurrentHashMapUtils.computeIfAbsent(qps, metric, methodMetric -> new TimeWindowCounter(bucketNum, timeWindowSeconds)); + } + + public void initRtMetric(MethodMetric metric){ + ConcurrentHashMapUtils.computeIfAbsent(rt, metric, k -> new TimeWindowQuantile(DEFAULT_COMPRESSION, bucketNum, timeWindowSeconds)); + } + + public void initRtAgrMetric(MethodMetric metric){ + ConcurrentHashMapUtils.computeIfAbsent(rtAgr, metric, k -> new TimeWindowAggregator(bucketNum, timeWindowSeconds)); + } + + public void initWindowCounter(MetricsEvent event, MetricsKey targetKey){ + + MetricsKeyWrapper metricsKeyWrapper = new MetricsKeyWrapper(targetKey, MetricsPlaceValue.of(event.getAttachmentValue(MetricsConstants.INVOCATION_SIDE), MetricsLevel.SERVICE)); + + MethodMetric metric = new MethodMetric(applicationModel, event.getAttachmentValue(MetricsConstants.INVOCATION)); + + ConcurrentMap counter = methodTypeCounter.computeIfAbsent(metricsKeyWrapper, k -> new ConcurrentHashMap<>()); + + ConcurrentHashMapUtils.computeIfAbsent(counter, metric, methodMetric -> new TimeWindowCounter(bucketNum, timeWindowSeconds)); + + } } diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java index 4581141771..ca03be45b2 100644 --- a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java +++ b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java @@ -20,6 +20,7 @@ package org.apache.dubbo.metrics.collector; import org.apache.dubbo.common.constants.CommonConstants; import org.apache.dubbo.common.extension.Activate; import org.apache.dubbo.metrics.DefaultConstants; +import org.apache.dubbo.metrics.MetricsConstants; import org.apache.dubbo.metrics.collector.sample.MetricsCountSampleConfigurer; import org.apache.dubbo.metrics.collector.sample.MetricsSampler; import org.apache.dubbo.metrics.collector.sample.SimpleMetricsCountSampler; @@ -29,9 +30,12 @@ import org.apache.dubbo.metrics.data.MethodStatComposite; import org.apache.dubbo.metrics.data.RtStatComposite; import org.apache.dubbo.metrics.event.DefaultSubDispatcher; import org.apache.dubbo.metrics.event.MetricsEvent; +import org.apache.dubbo.metrics.event.MetricsInitEvent; import org.apache.dubbo.metrics.event.RequestEvent; +import org.apache.dubbo.metrics.event.TimeCounterEvent; import org.apache.dubbo.metrics.model.ApplicationMetric; import org.apache.dubbo.metrics.model.MetricsCategory; +import org.apache.dubbo.metrics.model.MetricsSupport; import org.apache.dubbo.metrics.model.key.MetricsLevel; import org.apache.dubbo.metrics.model.key.MetricsPlaceValue; import org.apache.dubbo.metrics.model.sample.CounterMetricSample; @@ -40,9 +44,12 @@ import org.apache.dubbo.rpc.model.ApplicationModel; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import static org.apache.dubbo.metrics.DefaultConstants.INIT_DEFAULT_METHOD_KEYS; import static org.apache.dubbo.metrics.model.MetricsCategory.APPLICATION; import static org.apache.dubbo.metrics.model.key.MetricsKey.APPLICATION_METRIC_INFO; +import static org.apache.dubbo.metrics.model.key.MetricsKey.METRIC_REQUESTS_SERVICE_UNAVAILABLE_FAILED; /** * Default implementation of {@link MetricsCollector} @@ -58,6 +65,11 @@ public class DefaultMetricsCollector extends CombMetricsCollector private final ApplicationModel applicationModel; private final List samplers = new ArrayList<>(); + private final List collectors = new ArrayList<>(); + + private final AtomicBoolean initialized = new AtomicBoolean(); + + public DefaultMetricsCollector(ApplicationModel applicationModel) { super(new BaseStatComposite(applicationModel) { @Override @@ -137,7 +149,26 @@ public class DefaultMetricsCollector extends CombMetricsCollector @Override public boolean isSupport(MetricsEvent event) { - return event instanceof RequestEvent; + return event instanceof RequestEvent || event instanceof MetricsInitEvent; + } + + @Override + public void onEvent(TimeCounterEvent event) { + if(event instanceof MetricsInitEvent){ + if(initialized.compareAndSet(false,true)) { + collectors.addAll(applicationModel.getBeanFactory().getBeansOfType(MetricsCollector.class)); + } + collectors.stream().forEach(collector->collector.initMetrics(event)); + return; + } + super.onEvent(event); + } + + @Override + public void initMetrics(MetricsEvent event) { + MetricsPlaceValue dynamicPlaceType = MetricsPlaceValue.of(event.getAttachmentValue(MetricsConstants.INVOCATION_SIDE), MetricsLevel.METHOD); + INIT_DEFAULT_METHOD_KEYS.stream().forEach(key->MetricsSupport.init(key, dynamicPlaceType, (MethodMetricsCollector) this, event)); + MetricsSupport.init(METRIC_REQUESTS_SERVICE_UNAVAILABLE_FAILED, MetricsPlaceValue.of(CommonConstants.CONSUMER, MetricsLevel.METHOD), (MethodMetricsCollector) this, event); } public SimpleMetricsCountSampler applicationSampler = new SimpleMetricsCountSampler() { diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/MetricThreadPoolExhaustedListener.java b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/MetricThreadPoolExhaustedListener.java index 07b7fc5360..4b45ba1dd9 100644 --- a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/MetricThreadPoolExhaustedListener.java +++ b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/MetricThreadPoolExhaustedListener.java @@ -34,10 +34,10 @@ public class MetricThreadPoolExhaustedListener implements ThreadPoolExhaustedLis public MetricThreadPoolExhaustedListener(String threadPoolExecutorName,ThreadRejectMetricsCountSampler sampler) { this.threadPoolExecutorName=threadPoolExecutorName; this.threadRejectMetricsCountSampler=sampler; + this.threadRejectMetricsCountSampler.addMetricName(threadPoolExecutorName); } @Override public void onEvent(ThreadPoolExhaustedEvent event) { - threadRejectMetricsCountSampler.addMetricName(threadPoolExecutorName); threadRejectMetricsCountSampler.inc(threadPoolExecutorName,threadPoolExecutorName); } } diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/SimpleMetricsCountSampler.java b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/SimpleMetricsCountSampler.java index 9c31973740..bbb1224a10 100644 --- a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/SimpleMetricsCountSampler.java +++ b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/SimpleMetricsCountSampler.java @@ -50,6 +50,10 @@ public abstract class SimpleMetricsCountSampler metricCounter.get(metricName)); } + protected void initMetricsCounter(S source, K metricsName){ + getAtomicCounter(source,metricsName); + } + protected abstract void countConfigure(MetricsCountSampleConfigurer sampleConfigure); private AtomicLong getAtomicCounter(S source, K metricsName) { diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/ThreadRejectMetricsCountSampler.java b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/ThreadRejectMetricsCountSampler.java index e9e55f9448..160f3c31fc 100644 --- a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/ThreadRejectMetricsCountSampler.java +++ b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/ThreadRejectMetricsCountSampler.java @@ -43,6 +43,7 @@ public class ThreadRejectMetricsCountSampler extends SimpleMetricsCountSampler metricSamples = defaultCollector.collect(); + //INIT_DEFAULT_METHOD_KEYS.size() = 6 + Assertions.assertEquals(INIT_DEFAULT_METHOD_KEYS.size(), metricSamples.size()); + List metricsNames = metricSamples.stream().map(MetricSample::getName).collect(Collectors.toList()); + + String REQUESTS = new MetricsKeyWrapper(METRIC_REQUESTS, MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey(); + String PROCESSING = new MetricsKeyWrapper(METRIC_REQUESTS_PROCESSING, MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey(); + Assertions.assertTrue(metricsNames.contains(REQUESTS)); + Assertions.assertTrue(metricsNames.contains(PROCESSING)); + for (MetricSample metricSample : metricSamples) { + if (metricSample instanceof GaugeMetricSample) { + GaugeMetricSample gaugeMetricSample = (GaugeMetricSample) metricSample; + Object objVal = gaugeMetricSample.getValue(); + if (objVal instanceof Map) { + Map value = (Map) objVal; + Assertions.assertTrue(value.values().stream().allMatch(atomicLong -> atomicLong.intValue() == 0)); + } + } else { + AtomicLong value = (AtomicLong) ((CounterMetricSample) metricSample).getValue(); + Assertions.assertEquals(0, value.intValue()); + } + } + + + List samples = aggregateMetricsCollector.collect(); + //INIT_AGG_METHOD_KEYS.size(10) + qps(1) + rt(4) +rtAgr(3)= 18 + Assertions.assertEquals(INIT_AGG_METHOD_KEYS.size()+ 1+ 4+ 3, samples.size()); + + for (MetricSample metricSample : samples) { + if (metricSample instanceof GaugeMetricSample) { + GaugeMetricSample gaugeMetricSample = (GaugeMetricSample) metricSample; + Object objVal = gaugeMetricSample.getValue(); + if (objVal instanceof TimeWindowCounter) { + Assertions.assertEquals(0.0,((TimeWindowCounter) objVal).get()); + } + } + } + + } + +} From d61f49128702b103996cf94d0d2baa918cf7e24a Mon Sep 17 00:00:00 2001 From: R <45811620+ray-lsr@users.noreply.github.com> Date: Sun, 27 Aug 2023 22:52:06 +0800 Subject: [PATCH 08/21] serialize.allowlist is not include SingletonMap (#12962) --- dubbo-common/src/main/resources/security/serialize.allowlist | 1 + 1 file changed, 1 insertion(+) diff --git a/dubbo-common/src/main/resources/security/serialize.allowlist b/dubbo-common/src/main/resources/security/serialize.allowlist index 7c781a1e56..bab3d2d932 100644 --- a/dubbo-common/src/main/resources/security/serialize.allowlist +++ b/dubbo-common/src/main/resources/security/serialize.allowlist @@ -83,6 +83,7 @@ java.util.Collections$EmptyList java.util.Collections$EmptyMap java.util.Collections$SingletonSet java.util.Collections$SingletonList +java.util.Collections$SingletonMap java.util.Collections$UnmodifiableCollection java.util.Collections$UnmodifiableList java.util.Collections$UnmodifiableMap From 79ba4cd6b737fa9a2af92a6d9a2189454dc5b623 Mon Sep 17 00:00:00 2001 From: yanfangli <63247242+yanfangli85@users.noreply.github.com> Date: Sun, 27 Aug 2023 23:16:56 +0800 Subject: [PATCH 09/21] Update CHANGES.md (#12960) * Update README.md of spell errors Update README.md of spell errors * Update CHANGES.md found and fixed spell error --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 2c282afdf6..2983d19539 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -101,7 +101,7 @@ check 2.7.5 milestone for details. * In consumer side the app cannot catch the exception from provider that is configured serialization="kryo". #4238 * fix StringUtils#isBlank #4725 * when the interfaceName of the Reference annotation has duplicated,the exception is puzzled #4160 -* when anonymity bean is defined in spirng context,dubbo throw npe # +* when anonymity bean is defined in spring context,dubbo throw npe # * add Thread ContextClassLoader #4712 * Fix judgment ipv4 address #4729 * The compilation of static methods should be excluded when generating the proxy. #4647 From 48a65a3510dd08a7fd35afce4ea42fc1b10f8c54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:42:59 +0800 Subject: [PATCH 10/21] Bump net.bytebuddy:byte-buddy from 1.14.5 to 1.14.7 (#12972) Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.14.5 to 1.14.7. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.14.5...byte-buddy-1.14.7) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-dependencies-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index aad35387e5..68ca0b791a 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -94,7 +94,7 @@ 5.3.25 5.8.5 3.29.2-GA - 1.14.6 + 1.14.7 3.2.10.Final 4.1.96.Final 2.2.1 From 382330387ae2b7d050ce326453111b32006d56ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:43:14 +0800 Subject: [PATCH 11/21] Bump org.graalvm.buildtools:native-maven-plugin from 0.9.24 to 0.9.25 (#12963) Bumps [org.graalvm.buildtools:native-maven-plugin](https://github.com/graalvm/native-build-tools) from 0.9.24 to 0.9.25. - [Release notes](https://github.com/graalvm/native-build-tools/releases) - [Commits](https://github.com/graalvm/native-build-tools/commits) --- updated-dependencies: - dependency-name: org.graalvm.buildtools:native-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml | 2 +- dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml index 22708014b8..17b4bb654f 100644 --- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml +++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml @@ -224,7 +224,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.24 + 0.9.25 ${project.build.outputDirectory} diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml index 0ad39765b5..ac2943a2bf 100644 --- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml +++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml @@ -222,7 +222,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.24 + 0.9.25 ${project.build.outputDirectory} From cd9897a55fd3e72a21b48b3d052e406340e8e00f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:43:28 +0800 Subject: [PATCH 12/21] Bump org.springframework.boot:spring-boot-dependencies (#12973) Bumps [org.springframework.boot:spring-boot-dependencies](https://github.com/spring-projects/spring-boot) from 2.7.14 to 2.7.15. - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v2.7.14...v2.7.15) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-dependencies dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-demo/dubbo-demo-spring-boot/pom.xml | 2 +- dubbo-spring-boot/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dubbo-demo/dubbo-demo-spring-boot/pom.xml b/dubbo-demo/dubbo-demo-spring-boot/pom.xml index d1d011fd79..a406c70d9b 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/pom.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/pom.xml @@ -36,7 +36,7 @@ 8 8 true - 2.7.14 + 2.7.15 2.7.14 1.11.3 diff --git a/dubbo-spring-boot/pom.xml b/dubbo-spring-boot/pom.xml index 02d056afe0..13ba91eb71 100644 --- a/dubbo-spring-boot/pom.xml +++ b/dubbo-spring-boot/pom.xml @@ -40,7 +40,7 @@ - 2.7.14 + 2.7.15 ${revision} 2.20.0 From e04e0e6c6645bf7ccad67fdcdd10f638dde9bdeb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:43:43 +0800 Subject: [PATCH 13/21] Bump org.springframework.boot:spring-boot-starter-test (#12971) Bumps [org.springframework.boot:spring-boot-starter-test](https://github.com/spring-projects/spring-boot) from 2.7.14 to 2.7.15. - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v2.7.14...v2.7.15) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-starter-test dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-config/dubbo-config-spring/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-config/dubbo-config-spring/pom.xml b/dubbo-config/dubbo-config-spring/pom.xml index 698a6cf43f..f61e122d38 100644 --- a/dubbo-config/dubbo-config-spring/pom.xml +++ b/dubbo-config/dubbo-config-spring/pom.xml @@ -27,7 +27,7 @@ The spring config module of dubbo project false - 2.7.14 + 2.7.15 From 53f5c77ac1ed5f450e933620eb5bd63431e45ff7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:43:51 +0800 Subject: [PATCH 14/21] Bump protobuf-java_version from 3.24.1 to 3.24.2 (#12967) Bumps `protobuf-java_version` from 3.24.1 to 3.24.2. Updates `com.google.protobuf:protobuf-java` from 3.24.1 to 3.24.2 - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.24.1...v3.24.2) Updates `com.google.protobuf:protobuf-java-util` from 3.24.1 to 3.24.2 --- updated-dependencies: - dependency-name: com.google.protobuf:protobuf-java dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: com.google.protobuf:protobuf-java-util dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-dependencies-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index 68ca0b791a..f9bf93bc85 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -114,7 +114,7 @@ 3.5.5 0.18.1 4.0.66 - 3.24.1 + 3.24.2 1.3.2 3.1.0 9.4.51.v20230217 From 56d312fefd540505905281c37ef76b40536e1142 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:44:12 +0800 Subject: [PATCH 15/21] Bump org.yaml:snakeyaml from 2.1 to 2.2 (#12970) Bumps [org.yaml:snakeyaml](https://bitbucket.org/snakeyaml/snakeyaml) from 2.1 to 2.2. - [Commits](https://bitbucket.org/snakeyaml/snakeyaml/branches/compare/snakeyaml-2.2..snakeyaml-2.1) --- updated-dependencies: - dependency-name: org.yaml:snakeyaml dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-dependencies-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index f9bf93bc85..9ea0066639 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -129,7 +129,7 @@ 2.57 1.11.1 2.1.0 - 2.1 + 2.2 3.12.0 1.8.0 0.1.35 From b09f34cf58987399f76c09471535535d21337db9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:44:43 +0800 Subject: [PATCH 16/21] Bump org.springframework.boot:spring-boot-maven-plugin (#12965) Bumps [org.springframework.boot:spring-boot-maven-plugin](https://github.com/spring-projects/spring-boot) from 2.7.14 to 2.7.15. - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v2.7.14...v2.7.15) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-demo/dubbo-demo-annotation/pom.xml | 2 +- dubbo-demo/dubbo-demo-api/pom.xml | 2 +- dubbo-demo/dubbo-demo-spring-boot/pom.xml | 2 +- dubbo-demo/dubbo-demo-xml/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dubbo-demo/dubbo-demo-annotation/pom.xml b/dubbo-demo/dubbo-demo-annotation/pom.xml index 8e46e0d3c0..4617288ac8 100644 --- a/dubbo-demo/dubbo-demo-annotation/pom.xml +++ b/dubbo-demo/dubbo-demo-annotation/pom.xml @@ -30,7 +30,7 @@ true - 2.7.14 + 2.7.15 diff --git a/dubbo-demo/dubbo-demo-api/pom.xml b/dubbo-demo/dubbo-demo-api/pom.xml index 6b59e1a693..16851a46c4 100644 --- a/dubbo-demo/dubbo-demo-api/pom.xml +++ b/dubbo-demo/dubbo-demo-api/pom.xml @@ -36,7 +36,7 @@ true - 2.7.14 + 2.7.15 dubbo-demo-api diff --git a/dubbo-demo/dubbo-demo-spring-boot/pom.xml b/dubbo-demo/dubbo-demo-spring-boot/pom.xml index a406c70d9b..bfe8fc9334 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/pom.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/pom.xml @@ -37,7 +37,7 @@ 8 true 2.7.15 - 2.7.14 + 2.7.15 1.11.3 diff --git a/dubbo-demo/dubbo-demo-xml/pom.xml b/dubbo-demo/dubbo-demo-xml/pom.xml index aee6254372..659275d7fa 100644 --- a/dubbo-demo/dubbo-demo-xml/pom.xml +++ b/dubbo-demo/dubbo-demo-xml/pom.xml @@ -32,7 +32,7 @@ true - 2.7.14 + 2.7.15 From 3fa2674df36714d4bc51549bc02378cee25c09e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:44:51 +0800 Subject: [PATCH 17/21] Bump netty4_version from 4.1.96.Final to 4.1.97.Final (#12964) Bumps `netty4_version` from 4.1.96.Final to 4.1.97.Final. Updates `io.netty:netty-all` from 4.1.96.Final to 4.1.97.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.96.Final...netty-4.1.97.Final) Updates `io.netty:netty-bom` from 4.1.96.Final to 4.1.97.Final - [Commits](https://github.com/netty/netty/compare/netty-4.1.96.Final...netty-4.1.97.Final) --- updated-dependencies: - dependency-name: io.netty:netty-all dependency-type: direct:development update-type: version-update:semver-patch - dependency-name: io.netty:netty-bom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-dependencies-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index 9ea0066639..23082a0d94 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -96,7 +96,7 @@ 3.29.2-GA 1.14.7 3.2.10.Final - 4.1.96.Final + 4.1.97.Final 2.2.1 2.4.4 4.5.14 From 042a17941dd42de8eddd611710055ea549c8899f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 09:45:09 +0800 Subject: [PATCH 18/21] Bump org.springframework.security:spring-security-bom (#12966) Bumps [org.springframework.security:spring-security-bom](https://github.com/spring-projects/spring-security) from 5.8.5 to 5.8.6. - [Release notes](https://github.com/spring-projects/spring-security/releases) - [Changelog](https://github.com/spring-projects/spring-security/blob/main/RELEASE.adoc) - [Commits](https://github.com/spring-projects/spring-security/compare/5.8.5...5.8.6) --- updated-dependencies: - dependency-name: org.springframework.security:spring-security-bom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-dependencies-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index 23082a0d94..482f5cc958 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -92,7 +92,7 @@ 5.3.25 - 5.8.5 + 5.8.6 3.29.2-GA 1.14.7 3.2.10.Final From e07fc6311b54055abc86f849d8b1598d8bc347b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 16:04:43 +0800 Subject: [PATCH 19/21] Bump org.testcontainers:testcontainers from 1.18.3 to 1.19.0 (#12969) Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.18.3 to 1.19.0. - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.18.3...1.19.0) --- updated-dependencies: - dependency-name: org.testcontainers:testcontainers dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dubbo-config/dubbo-config-api/pom.xml | 2 +- dubbo-dependencies-bom/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dubbo-config/dubbo-config-api/pom.xml b/dubbo-config/dubbo-config-api/pom.xml index ef57efb4d9..9b73738060 100644 --- a/dubbo-config/dubbo-config-api/pom.xml +++ b/dubbo-config/dubbo-config-api/pom.xml @@ -229,7 +229,7 @@ org.testcontainers testcontainers - 1.18.3 + 1.19.0 test diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index 482f5cc958..846e2e70b5 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -174,7 +174,7 @@ 2.2.7 1.2.0 - 1.18.3 + 1.19.0 0.7.6 3.2.13 1.6.11 From 39fc67387b221753f41f71a421cd4030f8209ddb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 16:04:53 +0800 Subject: [PATCH 20/21] Bump spring-boot.version from 2.7.14 to 2.7.15 (#12968) Bumps `spring-boot.version` from 2.7.14 to 2.7.15. Updates `org.springframework.boot:spring-boot-starter` from 2.7.14 to 2.7.15 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v2.7.14...v2.7.15) Updates `org.springframework.boot:spring-boot-autoconfigure` from 2.7.14 to 2.7.15 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v2.7.14...v2.7.15) Updates `org.springframework.boot:spring-boot-starter-logging` from 2.7.14 to 2.7.15 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](https://github.com/spring-projects/spring-boot/compare/v2.7.14...v2.7.15) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-starter dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-autoconfigure dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-starter-logging dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../dubbo-demo-spring-boot-consumer/pom.xml | 2 +- .../dubbo-demo-spring-boot-provider/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml index ec7a066aa8..8a9ac8d08c 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml @@ -31,7 +31,7 @@ 8 8 1.7.33 - 2.7.14 + 2.7.15 true diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml index ea0dfd6235..7f59831777 100644 --- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml +++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml @@ -31,7 +31,7 @@ 8 8 1.7.33 - 2.7.14 + 2.7.15 true From c12a57eb3c5593b735ea342c99b5981188d5720d Mon Sep 17 00:00:00 2001 From: TomlongTK Date: Tue, 29 Aug 2023 16:14:52 +0800 Subject: [PATCH 21/21] enhance application discovery toString (#12953) --- .../rpc/cluster/directory/AbstractDirectory.java | 4 +--- .../registry/client/ServiceDiscoveryRegistry.java | 8 +++----- .../client/ServiceDiscoveryRegistryDirectory.java | 12 ++++++++++-- .../dubbo/registry/integration/DynamicDirectory.java | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java index 4ffe016d12..8f5875333f 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java @@ -224,10 +224,8 @@ public abstract class AbstractDirectory implements Directory { logger.warn(CLUSTER_NO_VALID_PROVIDER, "provider server or registry center crashed", "", "No provider available after connectivity filter for the service " + getConsumerUrl().getServiceKey() - + " All validInvokers' size: " + validInvokers.size() + " All routed invokers' size: " + routedResult.size() - + " All invokers' size: " + invokers.size() - + " from registry " + getUrl().getAddress() + + " from registry " + this + " on the consumer " + NetUtils.getLocalHost() + " using the dubbo version " + Version.getVersion() + "."); } diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java index 95a196466e..ec125e37be 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java @@ -133,10 +133,8 @@ public class ServiceDiscoveryRegistry extends FailbackRegistry { boolean should = PROVIDER_SIDE.equals(side); // Only register the Provider. - if (!should) { - if (logger.isDebugEnabled()) { - logger.debug(String.format("The URL[%s] should not be registered.", providerURL)); - } + if (!should && logger.isDebugEnabled()) { + logger.debug(String.format("The URL[%s] should not be registered.", providerURL)); } if (!acceptable(providerURL)) { @@ -394,7 +392,7 @@ public class ServiceDiscoveryRegistry extends FailbackRegistry { Lock mappingLock = serviceNameMapping.getMappingLock(event.getServiceKey()); try { mappingLock.lock(); - if (CollectionUtils.isEmpty(tempOldApps) && newApps.size() > 0) { + if (CollectionUtils.isEmpty(tempOldApps) && !newApps.isEmpty()) { serviceNameMapping.putCachedMapping(ServiceNameMapping.buildMappingKey(url), newApps); subscribeURLs(url, listener, newApps); oldApps = newApps; diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java index d5168aaf7c..5dbfac3ce8 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java @@ -584,7 +584,7 @@ public class ServiceDiscoveryRegistryDirectory extends DynamicDirectory { } void addNotifyListener(ServiceDiscoveryRegistryDirectory listener) { - if (listeners.size() == 0) { + if (listeners.isEmpty()) { this.initWith(moduleModel.getApplicationModel().getApplicationName() + CONFIGURATORS_SUFFIX); } this.listeners.add(listener); @@ -592,7 +592,7 @@ public class ServiceDiscoveryRegistryDirectory extends DynamicDirectory { void removeNotifyListener(ServiceDiscoveryRegistryDirectory listener) { this.listeners.remove(listener); - if (listeners.size() == 0) { + if (listeners.isEmpty()) { this.stopListen(moduleModel.getApplicationModel().getApplicationName() + CONFIGURATORS_SUFFIX); } } @@ -693,4 +693,12 @@ public class ServiceDiscoveryRegistryDirectory extends DynamicDirectory { } } + @Override + public String toString() { + return "ServiceDiscoveryRegistryDirectory(" + + "registry: " + getUrl().getAddress() + + ", subscribed key: " + (serviceListener == null || CollectionUtils.isEmpty(serviceListener.getServiceNames()) + ? getConsumerUrl().getServiceKey() : serviceListener.getServiceNames().toString()) + + ")-" + super.toString(); + } } diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DynamicDirectory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DynamicDirectory.java index 7ee4da0ed8..1f57e972d7 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DynamicDirectory.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DynamicDirectory.java @@ -195,7 +195,7 @@ public abstract class DynamicDirectory extends AbstractDirectory implement if (forbidden && shouldFailFast) { // 1. No service provider 2. Service providers are disabled throw new RpcException(RpcException.FORBIDDEN_EXCEPTION, "No provider available from registry " + - getUrl().getAddress() + " for service " + getConsumerUrl().getServiceKey() + " on consumer " + + this + " for service " + getConsumerUrl().getServiceKey() + " on consumer " + NetUtils.getLocalHost() + " use dubbo version " + Version.getVersion() + ", please check status of providers(disabled, not registered or in blacklist)."); }