From 573220ebcf16fd8b321e4cf60c00387f569ff994 Mon Sep 17 00:00:00 2001 From: liu Date: Sat, 19 Oct 2024 15:24:50 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix():=20=E8=A7=A3=E5=86=B3metaFreshTime?= =?UTF-8?q?=E5=92=8CconfigServiceUrl=E7=9A=84NPE=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DefaultApolloClientBootstrapArgsApi.java | 57 ++++++++++--------- .../impl/DefaultApolloClientNamespaceApi.java | 3 +- .../ApolloClientMonitorMessageProducer.java | 6 +- .../framework/apollo/util/date/DateUtil.java | 32 +++++++++++ 4 files changed, 69 insertions(+), 29 deletions(-) create mode 100644 apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java index 19ca9b30..bfe29b89 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java @@ -28,7 +28,10 @@ import com.ctrip.framework.apollo.monitor.internal.listener.AbstractApolloClientMonitorEventListener; import com.ctrip.framework.apollo.monitor.internal.event.ApolloClientMonitorEvent; import com.ctrip.framework.apollo.util.ConfigUtil; +import com.ctrip.framework.apollo.util.date.DateUtil; import com.google.common.collect.Maps; + +import java.time.LocalDateTime; import java.util.Map; import org.slf4j.Logger; @@ -46,38 +49,35 @@ public class DefaultApolloClientBootstrapArgsApi extends public DefaultApolloClientBootstrapArgsApi(ConfigUtil configUtil) { super(TAG_BOOTSTRAP); - bootstrapArgs.put(APOLLO_ACCESS_KEY_SECRET, configUtil.getAccessKeySecret()); - bootstrapArgs.put(APOLLO_AUTO_UPDATE_INJECTED_SPRING_PROPERTIES, + putAttachmentValue(APOLLO_ACCESS_KEY_SECRET, configUtil.getAccessKeySecret()); + putAttachmentValue(APOLLO_AUTO_UPDATE_INJECTED_SPRING_PROPERTIES, configUtil.isAutoUpdateInjectedSpringPropertiesEnabled()); - bootstrapArgs.put(APOLLO_BOOTSTRAP_ENABLED, + putAttachmentValue(APOLLO_BOOTSTRAP_ENABLED, Boolean.parseBoolean(System.getProperty(APOLLO_BOOTSTRAP_ENABLED))); - bootstrapArgs.put(APOLLO_BOOTSTRAP_NAMESPACES, + putAttachmentValue(APOLLO_BOOTSTRAP_NAMESPACES, System.getProperty(APOLLO_BOOTSTRAP_NAMESPACES)); - bootstrapArgs.put(APOLLO_BOOTSTRAP_EAGER_LOAD_ENABLED, + putAttachmentValue(APOLLO_BOOTSTRAP_EAGER_LOAD_ENABLED, Boolean.parseBoolean(System.getProperty(APOLLO_BOOTSTRAP_EAGER_LOAD_ENABLED))); - bootstrapArgs.put(APOLLO_OVERRIDE_SYSTEM_PROPERTIES, configUtil.isOverrideSystemProperties()); - bootstrapArgs.put(APOLLO_CACHE_DIR, configUtil.getDefaultLocalCacheDir()); - bootstrapArgs.put(APOLLO_CLUSTER, configUtil.getCluster()); - bootstrapArgs.put(APOLLO_CONFIG_SERVICE, + putAttachmentValue(APOLLO_OVERRIDE_SYSTEM_PROPERTIES, configUtil.isOverrideSystemProperties()); + putAttachmentValue(APOLLO_CACHE_DIR, configUtil.getDefaultLocalCacheDir()); + putAttachmentValue(APOLLO_CLUSTER, configUtil.getCluster()); + putAttachmentValue(APOLLO_CONFIG_SERVICE, System.getProperty(APOLLO_CONFIG_SERVICE)); - bootstrapArgs.put(APOLLO_CLIENT_MONITOR_EXTERNAL_TYPE, configUtil.getMonitorExternalType()); - bootstrapArgs.put(APOLLO_CLIENT_MONITOR_ENABLED, configUtil.isClientMonitorEnabled()); - bootstrapArgs.put(APOLLO_CLIENT_MONITOR_EXTERNAL_EXPORT_PERIOD, + putAttachmentValue(APOLLO_CLIENT_MONITOR_EXTERNAL_TYPE, configUtil.getMonitorExternalType()); + putAttachmentValue(APOLLO_CLIENT_MONITOR_ENABLED, configUtil.isClientMonitorEnabled()); + putAttachmentValue(APOLLO_CLIENT_MONITOR_EXTERNAL_EXPORT_PERIOD, configUtil.getMonitorExternalExportPeriod()); - bootstrapArgs.put(APOLLO_META, configUtil.getMetaServerDomainName()); - bootstrapArgs.put(APOLLO_PROPERTY_NAMES_CACHE_ENABLE, configUtil.isPropertyNamesCacheEnabled()); - bootstrapArgs.put(APOLLO_PROPERTY_ORDER_ENABLE, configUtil.isPropertiesOrderEnabled()); - bootstrapArgs.put(APOLLO_CLIENT_MONITOR_JMX_ENABLED, configUtil.isClientMonitorJmxEnabled()); - bootstrapArgs.put(APOLLO_CLIENT_MONITOR_EXCEPTION_QUEUE_SIZE, + putAttachmentValue(APOLLO_META, configUtil.getMetaServerDomainName()); + putAttachmentValue(APOLLO_PROPERTY_NAMES_CACHE_ENABLE, configUtil.isPropertyNamesCacheEnabled()); + putAttachmentValue(APOLLO_PROPERTY_ORDER_ENABLE, configUtil.isPropertiesOrderEnabled()); + putAttachmentValue(APOLLO_CLIENT_MONITOR_JMX_ENABLED, configUtil.isClientMonitorJmxEnabled()); + putAttachmentValue(APOLLO_CLIENT_MONITOR_EXCEPTION_QUEUE_SIZE, configUtil.getMonitorExceptionQueueSize()); - bootstrapArgs.put(APP_ID, configUtil.getAppId()); - bootstrapArgs.put(ENV, configUtil.getApolloEnv()); - bootstrapArgs.put(VERSION, Apollo.VERSION); - bootstrapArgs.forEach((key, value) -> { - if (value != null) { - bootstrapArgsString.put(key, value.toString()); - } - }); + putAttachmentValue(APP_ID, configUtil.getAppId()); + putAttachmentValue(ENV, configUtil.getApolloEnv()); + putAttachmentValue(VERSION, Apollo.VERSION); + putAttachmentValue(META_FRESH, DateUtil.formatLocalDateTime(LocalDateTime.now())); + putAttachmentValue(CONFIG_SERVICE_URL,""); } @@ -85,11 +85,16 @@ public DefaultApolloClientBootstrapArgsApi(ConfigUtil configUtil) { public void collect0(ApolloClientMonitorEvent event) { String argName = event.getName(); if (bootstrapArgs.containsKey(argName)) { - bootstrapArgs.put(argName, event.getAttachmentValue(argName)); + putAttachmentValue(argName, event.getAttachmentValue(argName)); } else { logger.warn("Unhandled event name: {}", argName); } } + + private void putAttachmentValue(String argName, Object value) { + bootstrapArgs.put(argName, value); + bootstrapArgsString.put(argName, value.toString()); + } @Override public boolean isMetricsSampleUpdated() { diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientNamespaceApi.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientNamespaceApi.java index b6527b8b..4e58a631 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientNamespaceApi.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientNamespaceApi.java @@ -28,6 +28,7 @@ import com.ctrip.framework.apollo.monitor.internal.ApolloClientMonitorConstant; import com.ctrip.framework.apollo.monitor.internal.listener.AbstractApolloClientMonitorEventListener; import com.ctrip.framework.apollo.monitor.internal.event.ApolloClientMonitorEvent; +import com.ctrip.framework.apollo.util.date.DateUtil; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import java.time.LocalDateTime; @@ -182,7 +183,7 @@ public Map getNamespaceMetricsString() { namespaces.forEach((namespace, metrics) -> { NamespaceMetricsString namespaceMetricsString = new NamespaceMetricsString(); namespaceMetricsString.setFirstLoadTimeSpendInMs(metrics.getFirstLoadTimeSpendInMs()); - namespaceMetricsString.setLatestUpdateTime(metrics.getLatestUpdateTime().toString()); + namespaceMetricsString.setLatestUpdateTime(DateUtil.formatLocalDateTime(metrics.getLatestUpdateTime())); namespaceMetricsString.setUsageCount(metrics.getUsageCount()); namespaceMetricsString.setReleaseKey(metrics.getReleaseKey()); namespaceMetricsStringMap.put(namespace, namespaceMetricsString); diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/tracer/ApolloClientMonitorMessageProducer.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/tracer/ApolloClientMonitorMessageProducer.java index b744ce2d..1bc93a10 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/tracer/ApolloClientMonitorMessageProducer.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/tracer/ApolloClientMonitorMessageProducer.java @@ -25,8 +25,10 @@ import com.ctrip.framework.apollo.monitor.internal.event.ApolloClientMonitorEventPublisher; import com.ctrip.framework.apollo.tracer.spi.MessageProducer; import com.ctrip.framework.apollo.tracer.spi.Transaction; +import com.ctrip.framework.apollo.util.date.DateUtil; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -97,7 +99,7 @@ private void handleTaggedEvent(String type, String name) { publishNamespaceNotFoundEvent(name); break; case APOLLO_CLIENT_CONFIGMETA: - // 不需要收集 + // No need to collect break; default: break; @@ -124,7 +126,7 @@ private void publishMetaServiceEvent() { ApolloClientMonitorEventPublisher.publish( ApolloClientMonitorEventFactory.getInstance().createEvent(META_FRESH) .withTag(TAG_BOOTSTRAP) - .putAttachment(META_FRESH, LocalDate.now().toString())); + .putAttachment(META_FRESH, DateUtil.formatLocalDateTime(LocalDateTime.now()))); } private void publishConfigServiceEvent(String name) { diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java new file mode 100644 index 00000000..37344810 --- /dev/null +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java @@ -0,0 +1,32 @@ +/* + * Copyright 2022 Apollo Authors + * + * Licensed 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 com.ctrip.framework.apollo.util.date; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * @author Rawven + * @date 2024/10/19 + */ +public class DateUtil { + public static DateTimeFormatter MEDIUM_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + public static String formatLocalDateTime(LocalDateTime localDateTime) { + return localDateTime.format(MEDIUM_FORMATTER); + } +} From 212238bc8d21c127bdb83a59e0e51d8e7180eafc Mon Sep 17 00:00:00 2001 From: liu Date: Sat, 19 Oct 2024 15:25:29 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix():=20=E6=B6=88=E9=99=A4external-type?= =?UTF-8?q?=E5=9C=A8=E5=90=AF=E7=94=A8monitor=E4=B8=8B=E4=BD=86=E5=8F=88?= =?UTF-8?q?=E6=9C=AA=E9=85=8D=E7=BD=AE=E6=97=B6=E7=9A=84=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internals/ConfigMonitorInitializer.java | 9 +++++++-- .../DefaultApolloClientBootstrapArgsApi.java | 2 +- .../framework/apollo/util/date/DateUtil.java | 16 +++++++++++----- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java index a6c0f421..615b33a5 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java @@ -20,6 +20,7 @@ import com.ctrip.framework.apollo.build.ApolloInjector; import com.ctrip.framework.apollo.core.utils.ClassLoaderUtil; +import com.ctrip.framework.apollo.core.utils.StringUtils; import com.ctrip.framework.apollo.monitor.internal.exporter.AbstractApolloClientMetricsExporter; import com.ctrip.framework.apollo.monitor.internal.exporter.ApolloClientMetricsExporter; import com.ctrip.framework.apollo.monitor.internal.jmx.ApolloClientJmxMBeanRegister; @@ -102,10 +103,14 @@ private static void initializeMetricsEventListener() { private static void initializeMetricsExporter( ) { + if (StringUtils.isEmpty(m_configUtil.getMonitorExternalType()) || "NONE".equals(m_configUtil. + getMonitorExternalType())) { + return; + } ApolloClientMetricsExporterFactory exporterFactory = ApolloInjector.getInstance( - ApolloClientMetricsExporterFactory.class); + ApolloClientMetricsExporterFactory.class); ApolloClientMetricsExporter metricsReporter = exporterFactory.getMetricsReporter( - MONITOR_CONTEXT.getApolloClientMonitorEventListeners()); + MONITOR_CONTEXT.getApolloClientMonitorEventListeners()); if (metricsReporter != null) { MONITOR_CONTEXT.setApolloClientMetricsExporter(metricsReporter); } diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java index bfe29b89..36642e28 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java @@ -93,7 +93,7 @@ public void collect0(ApolloClientMonitorEvent event) { private void putAttachmentValue(String argName, Object value) { bootstrapArgs.put(argName, value); - bootstrapArgsString.put(argName, value.toString()); + bootstrapArgsString.put(argName, value == null ? null : value.toString()); } @Override diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java index 37344810..1b4b1a32 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java @@ -24,9 +24,15 @@ * @date 2024/10/19 */ public class DateUtil { - public static DateTimeFormatter MEDIUM_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - - public static String formatLocalDateTime(LocalDateTime localDateTime) { - return localDateTime.format(MEDIUM_FORMATTER); - } + public static final DateTimeFormatter MEDIUM_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + /** + * Formats a LocalDateTime object to a string using the MEDIUM_FORMATTER. + * + * @param localDateTime the LocalDateTime to format, can be null + * @return the formatted date-time string, or null if the input is null + */ + public static String formatLocalDateTime(LocalDateTime localDateTime) { + return localDateTime != null ? localDateTime.format(MEDIUM_FORMATTER) : null; + } } From 8c308a02a2100dd445f62f455937234cc7a9137f Mon Sep 17 00:00:00 2001 From: liu Date: Sat, 26 Oct 2024 21:46:26 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix():=20PrometheusApolloClientMetricsExpor?= =?UTF-8?q?ter=E4=B8=8B=E9=94=99=E8=AF=AF=E7=9A=84logger=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exporter/impl/PrometheusApolloClientMetricsExporter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apollo-plugin/apollo-plugin-client-prometheus/src/main/java/com/ctrip/framework/apollo/monitor/internal/exporter/impl/PrometheusApolloClientMetricsExporter.java b/apollo-plugin/apollo-plugin-client-prometheus/src/main/java/com/ctrip/framework/apollo/monitor/internal/exporter/impl/PrometheusApolloClientMetricsExporter.java index a07e3209..4acf5b37 100644 --- a/apollo-plugin/apollo-plugin-client-prometheus/src/main/java/com/ctrip/framework/apollo/monitor/internal/exporter/impl/PrometheusApolloClientMetricsExporter.java +++ b/apollo-plugin/apollo-plugin-client-prometheus/src/main/java/com/ctrip/framework/apollo/monitor/internal/exporter/impl/PrometheusApolloClientMetricsExporter.java @@ -40,7 +40,7 @@ public class PrometheusApolloClientMetricsExporter extends private static final String PROMETHEUS = "prometheus"; private final Logger logger = DeferredLoggerFactory.getLogger( - DefaultApolloClientNamespaceApi.class); + PrometheusApolloClientMetricsExporter.class); protected CollectorRegistry registry; protected Map map; From b3f51a49a98302dff3cd1b4c0aa0707c02560982 Mon Sep 17 00:00:00 2001 From: liu Date: Sat, 26 Oct 2024 21:56:12 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix():=20ConfigMoniotr=20=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E4=B8=8EAPI=E4=B8=8D=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ctrip/framework/apollo/monitor/api/ConfigMonitor.java | 2 +- .../apollo/monitor/internal/DefaultConfigMonitor.java | 2 +- .../apollo/monitor/internal/DefaultConfigMonitorTest.java | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/api/ConfigMonitor.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/api/ConfigMonitor.java index a1731644..f350cfeb 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/api/ConfigMonitor.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/api/ConfigMonitor.java @@ -39,7 +39,7 @@ public interface ConfigMonitor { /** * get running params monitor api */ - ApolloClientBootstrapArgsMonitorApi getRunningParamsMonitorApi(); + ApolloClientBootstrapArgsMonitorApi getBootstrapArgsMonitorApi(); /** * get monitor external system data diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitor.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitor.java index 27b6606c..49a6cd41 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitor.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitor.java @@ -49,7 +49,7 @@ public ApolloClientNamespaceMonitorApi getNamespaceMonitorApi() { } @Override - public ApolloClientBootstrapArgsMonitorApi getRunningParamsMonitorApi() { + public ApolloClientBootstrapArgsMonitorApi getBootstrapArgsMonitorApi() { return apolloClientMonitorContext.getBootstrapArgsApi(); } diff --git a/apollo-client/src/test/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitorTest.java b/apollo-client/src/test/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitorTest.java index 2f1ffc6c..870b54c3 100644 --- a/apollo-client/src/test/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitorTest.java +++ b/apollo-client/src/test/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitorTest.java @@ -18,7 +18,6 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; -import com.ctrip.framework.apollo.build.ApolloInjector; import com.ctrip.framework.apollo.build.MockInjector; import com.ctrip.framework.apollo.monitor.api.ApolloClientBootstrapArgsMonitorApi; import com.ctrip.framework.apollo.monitor.api.ApolloClientExceptionMonitorApi; @@ -65,7 +64,7 @@ public void setUp(){ public void testApis(){ assertSame(exceptionMonitorApi, configMonitor.getExceptionMonitorApi()); assertSame(namespaceMonitorApi, configMonitor.getNamespaceMonitorApi()); - assertSame(bootstrapArgsMonitorApi, configMonitor.getRunningParamsMonitorApi()); + assertSame(bootstrapArgsMonitorApi, configMonitor.getBootstrapArgsMonitorApi()); assertSame(threadPoolMonitorApi, configMonitor.getThreadPoolMonitorApi()); } From bec94fe0268aed5eec5743b7f68a832c99606e8d Mon Sep 17 00:00:00 2001 From: liu Date: Sun, 1 Dec 2024 01:22:33 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix():=20=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BB=A5=E5=8F=8A=E5=A2=9E=E5=8A=A0DateUtil=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internals/ConfigMonitorInitializer.java | 3 +- .../DefaultApolloClientBootstrapArgsApi.java | 11 ++++- .../impl/DefaultApolloClientNamespaceApi.java | 4 +- .../ApolloClientMonitorMessageProducer.java | 4 +- .../framework/apollo/util/ConfigUtil.java | 4 +- .../framework/apollo/util/date/DateUtil.java | 6 ++- .../apollo/util/date/DateUtilTest.java | 47 +++++++++++++++++++ 7 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 apollo-client/src/test/java/com/ctrip/framework/apollo/util/date/DateUtilTest.java diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java index 615b33a5..56e697ac 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java @@ -103,8 +103,7 @@ private static void initializeMetricsEventListener() { private static void initializeMetricsExporter( ) { - if (StringUtils.isEmpty(m_configUtil.getMonitorExternalType()) || "NONE".equals(m_configUtil. - getMonitorExternalType())) { + if (StringUtils.isEmpty(m_configUtil.getMonitorExternalType())) { return; } ApolloClientMetricsExporterFactory exporterFactory = ApolloInjector.getInstance( diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java index 36642e28..da7aa598 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientBootstrapArgsApi.java @@ -23,6 +23,7 @@ import com.ctrip.framework.apollo.Apollo; import com.ctrip.framework.apollo.core.utils.DeferredLoggerFactory; +import com.ctrip.framework.apollo.core.utils.StringUtils; import com.ctrip.framework.apollo.monitor.api.ApolloClientBootstrapArgsMonitorApi; import com.ctrip.framework.apollo.monitor.internal.jmx.mbean.ApolloClientJmxBootstrapArgsMBean; import com.ctrip.framework.apollo.monitor.internal.listener.AbstractApolloClientMonitorEventListener; @@ -33,6 +34,8 @@ import java.time.LocalDateTime; import java.util.Map; +import java.util.Optional; + import org.slf4j.Logger; /** @@ -76,7 +79,8 @@ public DefaultApolloClientBootstrapArgsApi(ConfigUtil configUtil) { putAttachmentValue(APP_ID, configUtil.getAppId()); putAttachmentValue(ENV, configUtil.getApolloEnv()); putAttachmentValue(VERSION, Apollo.VERSION); - putAttachmentValue(META_FRESH, DateUtil.formatLocalDateTime(LocalDateTime.now())); + Optional date = DateUtil.formatLocalDateTime(LocalDateTime.now()); + date.ifPresent(s -> putAttachmentValue(META_FRESH, s)); putAttachmentValue(CONFIG_SERVICE_URL,""); } @@ -92,8 +96,11 @@ public void collect0(ApolloClientMonitorEvent event) { } private void putAttachmentValue(String argName, Object value) { + if(StringUtils.isBlank(argName) || value == null) { + return; + } bootstrapArgs.put(argName, value); - bootstrapArgsString.put(argName, value == null ? null : value.toString()); + bootstrapArgsString.put(argName, value.toString()); } @Override diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientNamespaceApi.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientNamespaceApi.java index 4e58a631..286cb84d 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientNamespaceApi.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/listener/impl/DefaultApolloClientNamespaceApi.java @@ -36,6 +36,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import org.slf4j.Logger; @@ -183,7 +184,8 @@ public Map getNamespaceMetricsString() { namespaces.forEach((namespace, metrics) -> { NamespaceMetricsString namespaceMetricsString = new NamespaceMetricsString(); namespaceMetricsString.setFirstLoadTimeSpendInMs(metrics.getFirstLoadTimeSpendInMs()); - namespaceMetricsString.setLatestUpdateTime(DateUtil.formatLocalDateTime(metrics.getLatestUpdateTime())); + Optional date = DateUtil.formatLocalDateTime(metrics.getLatestUpdateTime()); + date.ifPresent(namespaceMetricsString::setLatestUpdateTime); namespaceMetricsString.setUsageCount(metrics.getUsageCount()); namespaceMetricsString.setReleaseKey(metrics.getReleaseKey()); namespaceMetricsStringMap.put(namespace, namespaceMetricsString); diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/tracer/ApolloClientMonitorMessageProducer.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/tracer/ApolloClientMonitorMessageProducer.java index 1bc93a10..07adfddf 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/tracer/ApolloClientMonitorMessageProducer.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/tracer/ApolloClientMonitorMessageProducer.java @@ -32,6 +32,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Optional; /** * @author Rawven @@ -123,10 +124,11 @@ private void publishConfigChangeEvent(String name) { } private void publishMetaServiceEvent() { + Optional date = DateUtil.formatLocalDateTime(LocalDateTime.now()); ApolloClientMonitorEventPublisher.publish( ApolloClientMonitorEventFactory.getInstance().createEvent(META_FRESH) .withTag(TAG_BOOTSTRAP) - .putAttachment(META_FRESH, DateUtil.formatLocalDateTime(LocalDateTime.now()))); + .putAttachment(META_FRESH, date.orElse(""))); } private void publishConfigServiceEvent(String name) { diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/util/ConfigUtil.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/util/ConfigUtil.java index 83a324f0..216a1db6 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/util/ConfigUtil.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/util/ConfigUtil.java @@ -73,7 +73,7 @@ public class ConfigUtil { private boolean overrideSystemProperties = true; private boolean clientMonitorEnabled = false; private boolean clientMonitorJmxEnabled = false; - private String monitorExternalType = "NONE"; + private String monitorExternalType = ""; private long monitorExternalExportPeriod = 10; private int monitorExceptionQueueSize = 25; @@ -507,7 +507,7 @@ private void initClientMonitorExternalType() { if (Strings.isNullOrEmpty(monitorExternalType)) { monitorExternalType = Foundation.app() - .getProperty(ApolloClientSystemConsts.APOLLO_CLIENT_MONITOR_EXTERNAL_TYPE, "NONE"); + .getProperty(ApolloClientSystemConsts.APOLLO_CLIENT_MONITOR_EXTERNAL_TYPE, ""); } } diff --git a/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java b/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java index 1b4b1a32..7a9bf6fa 100644 --- a/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java +++ b/apollo-client/src/main/java/com/ctrip/framework/apollo/util/date/DateUtil.java @@ -18,6 +18,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Optional; /** * @author Rawven @@ -32,7 +33,8 @@ public class DateUtil { * @param localDateTime the LocalDateTime to format, can be null * @return the formatted date-time string, or null if the input is null */ - public static String formatLocalDateTime(LocalDateTime localDateTime) { - return localDateTime != null ? localDateTime.format(MEDIUM_FORMATTER) : null; + public static Optional formatLocalDateTime(LocalDateTime localDateTime) { + return Optional.ofNullable(localDateTime) + .map(dt -> dt.format(MEDIUM_FORMATTER)); } } diff --git a/apollo-client/src/test/java/com/ctrip/framework/apollo/util/date/DateUtilTest.java b/apollo-client/src/test/java/com/ctrip/framework/apollo/util/date/DateUtilTest.java new file mode 100644 index 00000000..b9316482 --- /dev/null +++ b/apollo-client/src/test/java/com/ctrip/framework/apollo/util/date/DateUtilTest.java @@ -0,0 +1,47 @@ +/* + * Copyright 2022 Apollo Authors + * + * Licensed 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 com.ctrip.framework.apollo.util.date; + +import org.junit.Test; +import static org.junit.Assert.*; +import java.time.LocalDateTime; +import java.util.Optional; + +public class DateUtilTest { + + @Test + public void testFormatLocalDateTime_validDate() { + // 给定一个有效的 LocalDateTime + LocalDateTime dateTime = LocalDateTime.of(2024, 12, 1, 10, 30, 0); + + // 调用格式化方法 + Optional formattedDate = DateUtil.formatLocalDateTime(dateTime); + + // 验证返回值是否为期望格式的日期字符串 + assertTrue(formattedDate.isPresent()); // 使用 isPresent() 检查 Optional 是否包含值 + assertEquals("2024-12-01 10:30:00", formattedDate.get()); + } + + @Test + public void testFormatLocalDateTime_nullDate() { + // 传入 null + Optional result = DateUtil.formatLocalDateTime(null); + + // 验证返回的 Optional 是否为空 + assertFalse(result.isPresent()); // 使用 isPresent() 判断 Optional 是否为空 + } +}