This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new f5c8f5930f #10705 Control stack print lines (#10711)
f5c8f5930f is described below
commit f5c8f5930f59d64ca0df1e0ee651d9ec48f77364
Author: 不想当厨子的老谭 <[email protected]>
AuthorDate: Sun Oct 9 17:35:52 2022 +0800
#10705 Control stack print lines (#10711)
---
.../org/apache/dubbo/common/constants/CommonConstants.java | 6 ++++++
.../main/java/org/apache/dubbo/common/utils/JVMUtil.java | 13 +++++++++++--
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
index 8bb4ffe94f..2c2c188e72 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
@@ -583,4 +583,10 @@ public interface CommonConstants {
*/
String UNLOAD_CLUSTER_RELATED = "unloadClusterRelated";
+ /**
+ *
+ * used in JVMUtil.java ,Control stack print lines, default is 32 lines
+ *
+ */
+ String DUBBO_JSTACK_MAXLINE = "dubbo.jstack-dump.max-line";
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/JVMUtil.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/JVMUtil.java
index 79c4aff3e4..2e8f912332 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/JVMUtil.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/JVMUtil.java
@@ -23,6 +23,8 @@ import java.lang.management.MonitorInfo;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
+import org.apache.dubbo.common.constants.CommonConstants;
+
import static java.lang.Thread.State.BLOCKED;
import static java.lang.Thread.State.TIMED_WAITING;
import static java.lang.Thread.State.WAITING;
@@ -54,10 +56,17 @@ public class JVMUtil {
}
sb.append('\n');
int i = 0;
-
+ // default is 32, means only print up to 32 lines
+ int jstackMaxLine = 32;
+ String jstackMaxLineStr =
System.getProperty(CommonConstants.DUBBO_JSTACK_MAXLINE);
+ if(StringUtils.isNotEmpty(jstackMaxLineStr)) {
+ try {
+ jstackMaxLine = Integer.parseInt(jstackMaxLineStr);
+ }catch (Exception ignore) {}
+ }
StackTraceElement[] stackTrace = threadInfo.getStackTrace();
MonitorInfo[] lockedMonitors = threadInfo.getLockedMonitors();
- for (; i < stackTrace.length && i < 32; i++) {
+ for (; i < stackTrace.length && i < jstackMaxLine; i++) {
StackTraceElement ste = stackTrace[i];
sb.append("\tat ").append(ste.toString());
sb.append('\n');