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');
                 }
             }