From 6cda3251335fd43e4807753f3eb90c926421cdc0 Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Thu, 15 Dec 2022 12:40:36 +0800 Subject: [PATCH] Add some check for MultiInstanceTest (#11139) * Add some check for MultiInstanceTest * Add some check for MultiInstanceTest * Add some check for MultiInstanceTest --- .../common/resource/GlobalResourcesRepository.java | 3 +++ .../manager/FrameworkExecutorRepository.java | 3 +++ .../dubbo/config/bootstrap/MultiInstanceTest.java | 12 ++++++++---- .../apache/dubbo/test/check/DubboTestChecker.java | 1 + 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/resource/GlobalResourcesRepository.java b/dubbo-common/src/main/java/org/apache/dubbo/common/resource/GlobalResourcesRepository.java index f0ad708336..275b4dbd5f 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/resource/GlobalResourcesRepository.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/resource/GlobalResourcesRepository.java @@ -89,6 +89,9 @@ public class GlobalResourcesRepository { if (executorService == null || executorService.isShutdown()) { synchronized (this) { if (executorService == null || executorService.isShutdown()) { + if (logger.isInfoEnabled()) { + logger.info("Creating global shared handler ..."); + } executorService = Executors.newCachedThreadPool(new NamedThreadFactory("Dubbo-global-shared-handler", true)); } } diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/manager/FrameworkExecutorRepository.java b/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/manager/FrameworkExecutorRepository.java index 8679249d50..ce70b83fa4 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/manager/FrameworkExecutorRepository.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/manager/FrameworkExecutorRepository.java @@ -200,6 +200,9 @@ public class FrameworkExecutorRepository implements Disposable { shutdownExecutorServices(registryNotificationExecutorRing.listItems(), "registryNotificationExecutorRing"); + // mappingRefreshingExecutor + shutdownExecutorService(mappingRefreshingExecutor, + "mappingRefreshingExecutor"); } private void shutdownExecutorServices(List executorServices, String msg) { diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java index 6ef469bffa..fb61ec3359 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java @@ -74,7 +74,7 @@ class MultiInstanceTest { registryConfig = new RegistryConfig(ZookeeperRegistryCenterConfig.getConnectionAddress1()); // pre-check threads - //precheckUnclosedThreads(); + precheckUnclosedThreads(); } @AfterEach @@ -82,14 +82,18 @@ class MultiInstanceTest { FrameworkModel.destroyAll(); // check threads - //checkUnclosedThreads(); + checkUnclosedThreads(); } - private static Map precheckUnclosedThreads() throws IOException { + private static Map precheckUnclosedThreads() { // create a special DubboTestChecker if (testChecker == null) { testChecker = new DubboTestChecker(); - testChecker.init(null); + try { + testChecker.init(null); + } catch (IOException e) { + throw new RuntimeException(e); + } testClassName = MultiInstanceTest.class.getName(); } return testChecker.checkUnclosedThreads(testClassName, 0); diff --git a/dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/DubboTestChecker.java b/dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/DubboTestChecker.java index 846d01a8ad..a50ca3f05c 100644 --- a/dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/DubboTestChecker.java +++ b/dubbo-test/dubbo-test-check/src/main/java/org/apache/dubbo/test/check/DubboTestChecker.java @@ -254,6 +254,7 @@ public class DubboTestChecker implements TestExecutionListener { .filter(thread -> !StringUtils.startsWithAny(thread.getName(), "Reference Handler", "Finalizer", "Signal Dispatcher", "Attach Listener", "process reaper", "main" // jvm , "surefire-forkedjvm-" // surefire plugin + , "globalEventExecutor" )) .filter(thread -> !unclosedThreadMap.containsKey(thread)) .collect(Collectors.toList());