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:06 UTC

[incubator-servicecomb-java-chassis] 06/06: [SCB-617] avoid retry thread pool block shutdown

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 ddacc1714817f0a0deb2e2915e71f980285a1212
Author: wujimin <wu...@huawei.com>
AuthorDate: Mon May 28 16:37:03 2018 +0800

    [SCB-617] avoid retry thread pool block shutdown
---
 .../servicecomb/loadbalance/LoadbalanceHandler.java      |  5 ++++-
 .../servicecomb/loadbalance/TestLoadbalanceHandler.java  | 16 ++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadbalanceHandler.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadbalanceHandler.java
index bcbbfd4..723abef 100644
--- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadbalanceHandler.java
+++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadbalanceHandler.java
@@ -68,7 +68,10 @@ public class LoadbalanceHandler implements Handler {
 
     @Override
     public Thread newThread(Runnable r) {
-      return new Thread(r, "retry-pool-thread-" + count.getAndIncrement());
+      Thread thread = new Thread(r, "retry-pool-thread-" + count.getAndIncrement());
+      // avoid block shutdown
+      thread.setDaemon(true);
+      return thread;
     }
   });
 
diff --git a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
index 5c9ccbd..02061e8 100644
--- a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
+++ b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadbalanceHandler.java
@@ -22,6 +22,8 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
 
 import javax.ws.rs.core.Response.Status;
 import javax.xml.ws.Holder;
@@ -471,4 +473,18 @@ public class TestLoadbalanceHandler {
     Assert.assertTrue(handler.isFailedResponse(Response.create(490, "", "")));
     Assert.assertTrue(handler.isFailedResponse(Response.consumerFailResp(new NullPointerException())));
   }
+
+  @Test
+  public void retryPoolDaemon() throws ExecutionException, InterruptedException {
+    ExecutorService RETRY_POOL = Deencapsulation.getField(handler, "RETRY_POOL");
+
+    Holder<Thread> nameHolder = new Holder<>();
+
+    RETRY_POOL.submit(() -> {
+      nameHolder.value = Thread.currentThread();
+    }).get();
+
+    Assert.assertThat(nameHolder.value.getName(), Matchers.startsWith("retry-pool-thread-"));
+    Assert.assertTrue(nameHolder.value.isDaemon());
+  }
 }

-- 
To stop receiving notification emails like this one, please contact
wujimin@apache.org.