You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2018/06/04 02:03:05 UTC
[incubator-servicecomb-java-chassis] 05/06: [SCB-617] avoid
MetricsBootstrap shutdown NPE
This is an automated email from the ASF dual-hosted git repository.
wujimin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 22faf9d55744c9485996d2852d7db9815b888048
Author: wujimin <wu...@huawei.com>
AuthorDate: Mon May 28 16:30:40 2018 +0800
[SCB-617] avoid MetricsBootstrap shutdown NPE
---
.../foundation/metrics/MetricsBootstrap.java | 6 ++++--
.../foundation/metrics/MetricsInitializer.java | 2 +-
.../foundation/metrics/TestMetricsBootstrap.java | 20 ++++++++++++++------
.../metrics/core/DefaultRegistryInitializer.java | 2 +-
.../metrics/core/TestDefaultRegistryInitializer.java | 2 +-
.../metrics/prometheus/PrometheusPublisher.java | 2 +-
.../metrics/prometheus/TestPrometheusPublisher.java | 2 +-
7 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/MetricsBootstrap.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/MetricsBootstrap.java
index 1a6c0d1..7f13bf1 100644
--- a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/MetricsBootstrap.java
+++ b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/MetricsBootstrap.java
@@ -54,12 +54,14 @@ public class MetricsBootstrap {
}
public void shutdown() {
- executorService.shutdown();
+ if (executorService != null) {
+ executorService.shutdown();
+ }
List<MetricsInitializer> initializers = new ArrayList<>(SPIServiceUtils.getSortedService(MetricsInitializer.class));
Collections.reverse(initializers);
initializers.forEach(initializer -> {
- initializer.uninit();
+ initializer.destroy();
});
}
diff --git a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/MetricsInitializer.java b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/MetricsInitializer.java
index 04f9bd4..b232f48 100644
--- a/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/MetricsInitializer.java
+++ b/foundations/foundation-metrics/src/main/java/org/apache/servicecomb/foundation/metrics/MetricsInitializer.java
@@ -29,7 +29,7 @@ public interface MetricsInitializer {
*/
void init(CompositeRegistry globalRegistry, EventBus eventBus, MetricsBootstrapConfig config);
- default void uninit() {
+ default void destroy() {
}
}
diff --git a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/TestMetricsBootstrap.java b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/TestMetricsBootstrap.java
index b73834b..50cb30c 100644
--- a/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/TestMetricsBootstrap.java
+++ b/foundations/foundation-metrics/src/test/java/org/apache/servicecomb/foundation/metrics/TestMetricsBootstrap.java
@@ -102,7 +102,7 @@ public class TestMetricsBootstrap {
@Test
public void shutdown(@Mocked ScheduledExecutorService scheduledExecutorService) {
- List<MetricsInitializer> uninitList = new ArrayList<>();
+ List<MetricsInitializer> destroyList = new ArrayList<>();
MetricsInitializer initializer1 = new MetricsInitializer() {
@Override
public int getOrder() {
@@ -114,8 +114,8 @@ public class TestMetricsBootstrap {
}
@Override
- public void uninit() {
- uninitList.add(this);
+ public void destroy() {
+ destroyList.add(this);
}
};
@@ -130,8 +130,8 @@ public class TestMetricsBootstrap {
}
@Override
- public void uninit() {
- uninitList.add(this);
+ public void destroy() {
+ destroyList.add(this);
}
};
@@ -145,6 +145,14 @@ public class TestMetricsBootstrap {
bootstrap.shutdown();
- Assert.assertThat(uninitList, Matchers.contains(initializer2, initializer1));
+ Assert.assertThat(destroyList, Matchers.contains(initializer2, initializer1));
+ }
+
+ @Test
+ public void shutdown_notStart() {
+ Assert.assertNull(Deencapsulation.getField(bootstrap, "executorService"));
+
+ // should not throw exception
+ bootstrap.shutdown();
}
}
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultRegistryInitializer.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultRegistryInitializer.java
index 5e81ee1..6bd8146 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultRegistryInitializer.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/DefaultRegistryInitializer.java
@@ -49,7 +49,7 @@ public class DefaultRegistryInitializer implements MetricsInitializer {
}
@Override
- public void uninit() {
+ public void destroy() {
DefaultMonitorRegistry.getInstance().unregister(registry);
globalRegistry.remove(registry);
}
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestDefaultRegistryInitializer.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestDefaultRegistryInitializer.java
index 8692a80..4b2a1c3 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestDefaultRegistryInitializer.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestDefaultRegistryInitializer.java
@@ -49,7 +49,7 @@ public class TestDefaultRegistryInitializer {
Assert.assertEquals(1, registries.size());
Assert.assertEquals(1, DefaultMonitorRegistry.getInstance().getRegisteredMonitors().size());
- registryInitializer.uninit();
+ registryInitializer.destroy();
Assert.assertEquals(0, registries.size());
Assert.assertEquals(0, DefaultMonitorRegistry.getInstance().getRegisteredMonitors().size());
diff --git a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/PrometheusPublisher.java b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/PrometheusPublisher.java
index dd4122c..b1eb9c6 100644
--- a/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/PrometheusPublisher.java
+++ b/metrics/metrics-integration/metrics-prometheus/src/main/java/org/apache/servicecomb/metrics/prometheus/PrometheusPublisher.java
@@ -114,7 +114,7 @@ public class PrometheusPublisher extends Collector implements Collector.Describa
}
@Override
- public void uninit() {
+ public void destroy() {
if (httpServer == null) {
return;
}
diff --git a/metrics/metrics-integration/metrics-prometheus/src/test/java/org/apache/servicecomb/metrics/prometheus/TestPrometheusPublisher.java b/metrics/metrics-integration/metrics-prometheus/src/test/java/org/apache/servicecomb/metrics/prometheus/TestPrometheusPublisher.java
index 1bf0766..c953730 100644
--- a/metrics/metrics-integration/metrics-prometheus/src/test/java/org/apache/servicecomb/metrics/prometheus/TestPrometheusPublisher.java
+++ b/metrics/metrics-integration/metrics-prometheus/src/test/java/org/apache/servicecomb/metrics/prometheus/TestPrometheusPublisher.java
@@ -102,6 +102,6 @@ public class TestPrometheusPublisher {
"count_name{tag1=\"tag1v\",tag2=\"tag2v\",} 1.0\n", IOUtils.toString(is));
}
- publisher.uninit();
+ publisher.destroy();
}
}
--
To stop receiving notification emails like this one, please contact
wujimin@apache.org.