You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/10/27 08:51:35 UTC
[dubbo] branch 3.0 updated: [3.0] Fix PVS Studio static analyzer
(#9125)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new d9097ba [3.0] Fix PVS Studio static analyzer (#9125)
d9097ba is described below
commit d9097ba5bbe68755306925fed2eac42a3493657b
Author: Wang Chengming <63...@qq.com>
AuthorDate: Wed Oct 27 16:51:26 2021 +0800
[3.0] Fix PVS Studio static analyzer (#9125)
* on branch 3.0, fix PVS Studio static analyzer
* on branch 3.0 issue #4969, fix PVS Studio static analyzer
---
.../org/apache/dubbo/common/utils/JVMUtil.java | 28 ++++++++++------------
1 file changed, 12 insertions(+), 16 deletions(-)
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 052a120..79c4aff 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,10 @@ import java.lang.management.MonitorInfo;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
+import static java.lang.Thread.State.BLOCKED;
+import static java.lang.Thread.State.TIMED_WAITING;
+import static java.lang.Thread.State.WAITING;
+
public class JVMUtil {
public static void jstack(OutputStream stream) throws Exception {
ThreadMXBean threadMxBean = ManagementFactory.getThreadMXBean();
@@ -55,30 +59,22 @@ public class JVMUtil {
MonitorInfo[] lockedMonitors = threadInfo.getLockedMonitors();
for (; i < stackTrace.length && i < 32; i++) {
StackTraceElement ste = stackTrace[i];
- sb.append("\tat " + ste.toString());
+ sb.append("\tat ").append(ste.toString());
sb.append('\n');
if (i == 0 && threadInfo.getLockInfo() != null) {
Thread.State ts = threadInfo.getThreadState();
- switch (ts) {
- case BLOCKED:
- sb.append("\t- blocked on " + threadInfo.getLockInfo());
- sb.append('\n');
- break;
- case WAITING:
- sb.append("\t- waiting on " + threadInfo.getLockInfo());
- sb.append('\n');
- break;
- case TIMED_WAITING:
- sb.append("\t- waiting on " + threadInfo.getLockInfo());
- sb.append('\n');
- break;
- default:
+ if (BLOCKED.equals(ts)) {
+ sb.append("\t- blocked on ").append(threadInfo.getLockInfo());
+ sb.append('\n');
+ } else if (WAITING.equals(ts) || TIMED_WAITING.equals(ts)) {
+ sb.append("\t- waiting on ").append(threadInfo.getLockInfo());
+ sb.append('\n');
}
}
for (MonitorInfo mi : lockedMonitors) {
if (mi.getLockedStackDepth() == i) {
- sb.append("\t- locked " + mi);
+ sb.append("\t- locked ").append(mi);
sb.append('\n');
}
}