This is an automated email from the ASF dual-hosted git repository.
carryxyh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new fda71e7 must shutdown thread pool when no in use (#3255)
fda71e7 is described below
commit fda71e764be730508a421f884456414b451f78ee
Author: 苏承祥 <[email protected]>
AuthorDate: Fri Jan 18 10:25:35 2019 +0800
must shutdown thread pool when no in use (#3255)
* must shutdown thread pool when no in use
---
.../threadpool/support/AbortPolicyWithReport.java | 63 ++++++++++------------
1 file changed, 27 insertions(+), 36 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/support/AbortPolicyWithReport.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/support/AbortPolicyWithReport.java
index 0f4f72a..8a13761 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/support/AbortPolicyWithReport.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/support/AbortPolicyWithReport.java
@@ -24,13 +24,13 @@ import org.apache.dubbo.common.utils.JVMUtil;
import java.io.File;
import java.io.FileOutputStream;
-import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.Semaphore;
import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.ExecutorService;
/**
* Abort Policy.
@@ -78,43 +78,34 @@ public class AbortPolicyWithReport extends
ThreadPoolExecutor.AbortPolicy {
return;
}
- Executors.newSingleThreadExecutor().execute(new Runnable() {
- @Override
- public void run() {
- String dumpPath = url.getParameter(Constants.DUMP_DIRECTORY,
System.getProperty("user.home"));
-
- SimpleDateFormat sdf;
-
- String os = System.getProperty("os.name").toLowerCase();
-
- // window system don't support ":" in file name
- if(os.contains("win")){
- sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
- }else {
- sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
- }
-
- String dateStr = sdf.format(new Date());
- FileOutputStream jstackStream = null;
- try {
- jstackStream = new FileOutputStream(new File(dumpPath,
"Dubbo_JStack.log" + "." + dateStr));
- JVMUtil.jstack(jstackStream);
- } catch (Throwable t) {
- logger.error("dump jstack error", t);
- } finally {
- guard.release();
- if (jstackStream != null) {
- try {
- jstackStream.flush();
- jstackStream.close();
- } catch (IOException e) {
- }
- }
- }
-
- lastPrintTime = System.currentTimeMillis();
+ ExecutorService pool = Executors.newSingleThreadExecutor();
+ pool.execute(() -> {
+ String dumpPath = url.getParameter(Constants.DUMP_DIRECTORY,
System.getProperty("user.home"));
+
+ SimpleDateFormat sdf;
+
+ String os = System.getProperty("os.name").toLowerCase();
+
+ // window system don't support ":" in file name
+ if (os.contains("win")) {
+ sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
+ } else {
+ sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss");
+ }
+
+ String dateStr = sdf.format(new Date());
+ //try-with-resources
+ try (FileOutputStream jStackStream = new FileOutputStream(new
File(dumpPath, "Dubbo_JStack.log" + "." + dateStr))) {
+ JVMUtil.jstack(jStackStream);
+ } catch (Throwable t) {
+ logger.error("dump jStack error", t);
+ } finally {
+ guard.release();
}
+ lastPrintTime = System.currentTimeMillis();
});
+ //must shutdown thread pool ,if not will lead to OOM
+ pool.shutdown();
}