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.