This is an automated email from the ASF dual-hosted git repository.

lidongdai pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new cb52853  Fix some code specification issues (#2482)
cb52853 is described below

commit cb5285384efc2fdbaecf129eb4404095eb8ef419
Author: s751167520 <[email protected]>
AuthorDate: Sun May 10 23:05:12 2020 +0800

    Fix some code specification issues (#2482)
    
    * Fix some code specification issues
    
    * Pre-compile regular expressions to improve efficiency and solve 
concurrency problems
    
    * Solve the nullpoint problem that Object.equals may bring
    
    * Modify if else structure, add {} to improve code readability
    
    Co-Authored-By: daili <[email protected]>
    
    * Update ResourceTreeVisitor.java
    
    re-run test process
    
    Co-authored-by: daili <[email protected]>
    Co-authored-by: dailidong <[email protected]>
---
 .../dto/resources/visitor/ResourceTreeVisitor.java |  2 +
 .../api/service/ResourcesService.java              |  6 +-
 .../common/task/datax/DataxParameters.java         |  4 +-
 .../dolphinscheduler/common/utils/OSUtils.java     | 11 ++-
 .../utils/process/ProcessBuilderForWin32.java      | 86 +++++++++++++++------
 .../utils/process/ProcessEnvironmentForWin32.java  | 38 ++++++++-
 .../common/utils/process/ProcessImplForWin32.java  | 89 +++++++++++++++-------
 .../dao/entity/ProcessInstanceMap.java             | 20 +++--
 .../apache/dolphinscheduler/dao/entity/Queue.java  | 16 +++-
 .../dolphinscheduler/dao/entity/Session.java       | 20 +++--
 .../apache/dolphinscheduler/dao/entity/Tenant.java |  8 +-
 .../dao/utils/MysqlPerformance.java                |  8 +-
 .../server/utils/ProcessUtils.java                 | 12 ++-
 .../service/zk/AbstractZKClient.java               |  2 +-
 14 files changed, 234 insertions(+), 88 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/visitor/ResourceTreeVisitor.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/visitor/ResourceTreeVisitor.java
index 5cf1188..391822e 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/visitor/ResourceTreeVisitor.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/resources/visitor/ResourceTreeVisitor.java
@@ -50,6 +50,7 @@ public class ResourceTreeVisitor implements Visitor{
      * visit
      * @return resoruce component
      */
+    @Override
     public ResourceComponent visit() {
         ResourceComponent rootDirectory = new Directory();
         for (Resource resource : resourceList) {
@@ -117,6 +118,7 @@ public class ResourceTreeVisitor implements Visitor{
         }else{
             tempResourceComponent = new FileLeaf();
         }
+        
         tempResourceComponent.setName(resource.getAlias());
         
tempResourceComponent.setFullName(resource.getFullName().replaceFirst("/",""));
         tempResourceComponent.setId(resource.getId());
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
index 8f30754..ef12519 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
@@ -104,7 +104,7 @@ public class ResourcesService extends BaseService {
             putMsg(result, Status.HDFS_NOT_STARTUP);
             return result;
         }
-        String fullName = currentDir.equals("/") ? 
String.format("%s%s",currentDir,name):String.format("%s/%s",currentDir,name);
+        String fullName = "/".equals(currentDir) ? 
String.format("%s%s",currentDir,name):String.format("%s/%s",currentDir,name);
 
         if (pid != -1) {
             Resource parentResource = resourcesMapper.selectById(pid);
@@ -229,7 +229,7 @@ public class ResourcesService extends BaseService {
         }
 
         // check resoure name exists
-        String fullName = currentDir.equals("/") ? 
String.format("%s%s",currentDir,name):String.format("%s/%s",currentDir,name);
+        String fullName = "/".equals(currentDir) ? 
String.format("%s%s",currentDir,name):String.format("%s/%s",currentDir,name);
         if (checkResourceExists(fullName, 0, type.ordinal())) {
             logger.error("resource {} has exist, can't recreate", name);
             putMsg(result, Status.RESOURCE_EXIST);
@@ -839,7 +839,7 @@ public class ResourcesService extends BaseService {
         }
 
         String name = fileName.trim() + "." + nameSuffix;
-        String fullName = currentDirectory.equals("/") ? 
String.format("%s%s",currentDirectory,name):String.format("%s/%s",currentDirectory,name);
+        String fullName = "/".equals(currentDirectory) ? 
String.format("%s%s",currentDirectory,name):String.format("%s/%s",currentDirectory,name);
 
         result = verifyResourceName(fullName,type,loginUser);
         if (!result.getCode().equals(Status.SUCCESS.getCode())) {
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/task/datax/DataxParameters.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/task/datax/DataxParameters.java
index 872b3aa..a6f08cd 100755
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/task/datax/DataxParameters.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/task/datax/DataxParameters.java
@@ -187,7 +187,9 @@ public class DataxParameters extends AbstractParameters {
 
     @Override
     public boolean checkParameters() {
-        if (customConfig == null) return false;
+        if (customConfig == null) {
+            return false;
+        }
         if (customConfig == 0) {
             return dataSource != 0
                     && dataTarget != 0
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
index 3505e59..652b981 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
@@ -57,6 +57,12 @@ public class OSUtils {
 
   private OSUtils() {}
 
+  /**
+   * Initialization regularization, solve the problem of pre-compilation 
performance,
+   * avoid the thread safety problem of multi-thread operation
+   */
+  private static final Pattern PATTERN = Pattern.compile("\\s+");
+
 
   /**
    * get memory usage
@@ -219,8 +225,7 @@ public class OSUtils {
 
     List<String> users = new ArrayList<>();
     while (startPos <= endPos) {
-      Pattern pattern = Pattern.compile("\\s+");
-      users.addAll(Arrays.asList(pattern.split(lines[startPos])));
+      users.addAll(Arrays.asList(PATTERN.split(lines[startPos])));
       startPos++;
     }
 
@@ -313,7 +318,7 @@ public class OSUtils {
       String currentProcUserName = System.getProperty("user.name");
       String result = exeCmd(String.format("net user \"%s\"", 
currentProcUserName));
       String line = result.split("\n")[22];
-      String group = Pattern.compile("\\s+").split(line)[1];
+      String group = PATTERN.split(line)[1];
       if (group.charAt(0) == '*') {
         return group.substring(1);
       } else {
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessBuilderForWin32.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessBuilderForWin32.java
index eee456d..9d51eae 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessBuilderForWin32.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessBuilderForWin32.java
@@ -189,8 +189,9 @@ public class ProcessBuilderForWin32 {
      * @throws NullPointerException if the argument is null
      */
     public ProcessBuilderForWin32(List<String> command) {
-        if (command == null)
+        if (command == null) {
             throw new NullPointerException();
+        }
         this.command = command;
     }
 
@@ -207,8 +208,9 @@ public class ProcessBuilderForWin32 {
      */
     public ProcessBuilderForWin32(String... command) {
         this.command = new ArrayList<>(command.length);
-        for (String arg : command)
+        for (String arg : command) {
             this.command.add(arg);
+        }
     }
 
     /**
@@ -238,8 +240,9 @@ public class ProcessBuilderForWin32 {
      * @throws NullPointerException if the argument is null
      */
     public ProcessBuilderForWin32 command(List<String> command) {
-        if (command == null)
+        if (command == null) {
             throw new NullPointerException();
+        }
         this.command = command;
         return this;
     }
@@ -257,8 +260,9 @@ public class ProcessBuilderForWin32 {
      */
     public ProcessBuilderForWin32 command(String... command) {
         this.command = new ArrayList<>(command.length);
-        for (String arg : command)
+        for (String arg : command) {
             this.command.add(arg);
+        }
         return this;
     }
 
@@ -344,11 +348,13 @@ public class ProcessBuilderForWin32 {
      */
     public Map<String,String> environment() {
         SecurityManager security = System.getSecurityManager();
-        if (security != null)
+        if (security != null) {
             security.checkPermission(new RuntimePermission("getenv.*"));
+        }
 
-        if (environment == null)
+        if (environment == null) {
             environment = ProcessEnvironmentForWin32.environment();
+        }
 
         assert environment != null;
 
@@ -369,15 +375,17 @@ public class ProcessBuilderForWin32 {
                 // for compatibility with old broken code.
 
                 // Silently discard any trailing junk.
-                if (envstring.indexOf((int) '\u0000') != -1)
+                if (envstring.indexOf((int) '\u0000') != -1) {
                     envstring = envstring.replaceFirst("\u0000.*", "");
+                }
 
                 int eqlsign =
                         envstring.indexOf('=', 
ProcessEnvironmentForWin32.MIN_NAME_LENGTH);
                 // Silently ignore envstrings lacking the required `='.
-                if (eqlsign != -1)
+                if (eqlsign != -1) {
                     environment.put(envstring.substring(0,eqlsign),
                             envstring.substring(eqlsign+1));
+                }
             }
         }
         return this;
@@ -425,6 +433,7 @@ public class ProcessBuilderForWin32 {
     static class NullInputStream extends InputStream {
         static final ProcessBuilderForWin32.NullInputStream INSTANCE = new 
ProcessBuilderForWin32.NullInputStream();
         private NullInputStream() {}
+        @Override
         public int read()      { return -1; }
         @Override
         public int available() { return 0; }
@@ -436,6 +445,7 @@ public class ProcessBuilderForWin32 {
     static class NullOutputStream extends OutputStream {
         static final ProcessBuilderForWin32.NullOutputStream INSTANCE = new 
ProcessBuilderForWin32.NullOutputStream();
         private NullOutputStream() {}
+        @Override
         public void write(int b) throws IOException {
             throw new IOException("Stream closed");
         }
@@ -516,7 +526,9 @@ public class ProcessBuilderForWin32 {
          * }</pre>
          */
         public static final ProcessBuilderForWin32.Redirect PIPE = new 
ProcessBuilderForWin32.Redirect() {
+            @Override
             public Type type() { return Type.PIPE; }
+            @Override
             public String toString() { return type().toString(); }};
 
         /**
@@ -531,7 +543,9 @@ public class ProcessBuilderForWin32 {
          * }</pre>
          */
         public static final ProcessBuilderForWin32.Redirect INHERIT = new 
ProcessBuilderForWin32.Redirect() {
+            @Override
             public Type type() { return Type.INHERIT; }
+            @Override
             public String toString() { return type().toString(); }};
 
         /**
@@ -565,12 +579,15 @@ public class ProcessBuilderForWin32 {
          * @return a redirect to read from the specified file
          */
         public static ProcessBuilderForWin32.Redirect from(final File file) {
-            if (file == null)
+            if (file == null) {
                 throw new NullPointerException();
+            }
             return new ProcessBuilderForWin32.Redirect() {
+                @Override
                 public Type type() { return Type.READ; }
                 @Override
                 public File file() { return file; }
+                @Override
                 public String toString() {
                     return "redirect to read from file \"" + file + "\"";
                 }
@@ -593,12 +610,15 @@ public class ProcessBuilderForWin32 {
          * @return a redirect to write to the specified file
          */
         public static ProcessBuilderForWin32.Redirect to(final File file) {
-            if (file == null)
+            if (file == null) {
                 throw new NullPointerException();
+            }
             return new ProcessBuilderForWin32.Redirect() {
+                @Override
                 public Type type() { return Type.WRITE; }
                 @Override
                 public File file() { return file; }
+                @Override
                 public String toString() {
                     return "redirect to write to file \"" + file + "\"";
                 }
@@ -626,12 +646,15 @@ public class ProcessBuilderForWin32 {
          * @return a redirect to append to the specified file
          */
         public static ProcessBuilderForWin32.Redirect appendTo(final File 
file) {
-            if (file == null)
+            if (file == null) {
                 throw new NullPointerException();
+            }
             return new ProcessBuilderForWin32.Redirect() {
+                @Override
                 public Type type() { return Type.APPEND; }
                 @Override
                 public File file() { return file; }
+                @Override
                 public String toString() {
                     return "redirect to append to file \"" + file + "\"";
                 }
@@ -647,14 +670,18 @@ public class ProcessBuilderForWin32 {
          * instances of the same type associated with non-null equal
          * {@code File} instances.
          */
+        @Override
         public boolean equals(Object obj) {
-            if (obj == this)
+            if (obj == this) {
                 return true;
-            if (! (obj instanceof ProcessBuilderForWin32.Redirect))
+            }
+            if (! (obj instanceof ProcessBuilderForWin32.Redirect)) {
                 return false;
+            }
             ProcessBuilderForWin32.Redirect r = 
(ProcessBuilderForWin32.Redirect) obj;
-            if (r.type() != this.type())
+            if (r.type() != this.type()) {
                 return false;
+            }
             assert this.file() != null;
             return this.file().equals(r.file());
         }
@@ -663,12 +690,14 @@ public class ProcessBuilderForWin32 {
          * Returns a hash code value for this {@code Redirect}.
          * @return a hash code value for this {@code Redirect}
          */
+        @Override
         public int hashCode() {
             File file = file();
-            if (file == null)
+            if (file == null) {
                 return super.hashCode();
-            else
+            } else {
                 return file.hashCode();
+            }
         }
 
         /**
@@ -679,10 +708,11 @@ public class ProcessBuilderForWin32 {
     }
 
     private ProcessBuilderForWin32.Redirect[] redirects() {
-        if (redirects == null)
-            redirects = new ProcessBuilderForWin32.Redirect[] {
-                    ProcessBuilderForWin32.Redirect.PIPE, 
ProcessBuilderForWin32.Redirect.PIPE, ProcessBuilderForWin32.Redirect.PIPE
+        if (redirects == null) {
+            redirects = new Redirect[] {
+                    Redirect.PIPE, Redirect.PIPE, Redirect.PIPE
             };
+        }
         return redirects;
     }
 
@@ -711,9 +741,10 @@ public class ProcessBuilderForWin32 {
      */
     public ProcessBuilderForWin32 
redirectInput(ProcessBuilderForWin32.Redirect source) {
         if (source.type() == ProcessBuilderForWin32.Redirect.Type.WRITE ||
-                source.type() == ProcessBuilderForWin32.Redirect.Type.APPEND)
+                source.type() == ProcessBuilderForWin32.Redirect.Type.APPEND) {
             throw new IllegalArgumentException(
                     "Redirect invalid for reading: " + source);
+        }
         redirects()[0] = source;
         return this;
     }
@@ -741,9 +772,10 @@ public class ProcessBuilderForWin32 {
      * @since  1.7
      */
     public ProcessBuilderForWin32 
redirectOutput(ProcessBuilderForWin32.Redirect destination) {
-        if (destination.type() == ProcessBuilderForWin32.Redirect.Type.READ)
+        if (destination.type() == ProcessBuilderForWin32.Redirect.Type.READ) {
             throw new IllegalArgumentException(
                     "Redirect invalid for writing: " + destination);
+        }
         redirects()[1] = destination;
         return this;
     }
@@ -775,9 +807,10 @@ public class ProcessBuilderForWin32 {
      * @since  1.7
      */
     public ProcessBuilderForWin32 
redirectError(ProcessBuilderForWin32.Redirect destination) {
-        if (destination.type() == ProcessBuilderForWin32.Redirect.Type.READ)
+        if (destination.type() == ProcessBuilderForWin32.Redirect.Type.READ) {
             throw new IllegalArgumentException(
                     "Redirect invalid for writing: " + destination);
+        }
         redirects()[2] = destination;
         return this;
     }
@@ -1019,15 +1052,18 @@ public class ProcessBuilderForWin32 {
         String[] cmdarray = command.toArray(new String[command.size()]);
         cmdarray = cmdarray.clone();
 
-        for (String arg : cmdarray)
-            if (arg == null)
+        for (String arg : cmdarray) {
+            if (arg == null) {
                 throw new NullPointerException();
+            }
+        }
         // Throws IndexOutOfBoundsException if command is empty
         String prog = cmdarray[0];
 
         SecurityManager security = System.getSecurityManager();
-        if (security != null)
+        if (security != null) {
             security.checkExec(prog);
+        }
 
         String dir = directory == null ? null : directory.toString();
 
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessEnvironmentForWin32.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessEnvironmentForWin32.java
index 39fddfb..85d9a21 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessEnvironmentForWin32.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessEnvironmentForWin32.java
@@ -27,22 +27,25 @@ final class ProcessEnvironmentForWin32 extends 
HashMap<String,String> {
     private static String validateName(String name) {
         // An initial `=' indicates a magic Windows variable name -- OK
         if (name.indexOf('=', 1)   != -1 ||
-                name.indexOf('\u0000') != -1)
+                name.indexOf('\u0000') != -1) {
             throw new IllegalArgumentException
                     ("Invalid environment variable name: \"" + name + "\"");
+        }
         return name;
     }
 
     private static String validateValue(String value) {
-        if (value.indexOf('\u0000') != -1)
+        if (value.indexOf('\u0000') != -1) {
             throw new IllegalArgumentException
                     ("Invalid environment variable value: \"" + value + "\"");
+        }
         return value;
     }
 
     private static String nonNullString(Object o) {
-        if (o == null)
+        if (o == null) {
             throw new NullPointerException();
+        }
         return (String) o;
     }
 
@@ -70,26 +73,38 @@ final class ProcessEnvironmentForWin32 extends 
HashMap<String,String> {
     private static class CheckedEntry implements Entry<String,String> {
         private final Entry<String,String> e;
         public CheckedEntry(Entry<String,String> e) {this.e = e;}
+        @Override
         public String getKey()   { return e.getKey();}
+        @Override
         public String getValue() { return e.getValue();}
+        @Override
         public String setValue(String value) {
             return e.setValue(validateValue(value));
         }
+        @Override
         public String toString() { return getKey() + "=" + getValue();}
+        @Override
         public boolean equals(Object o) {return e.equals(o);}
+        @Override
         public int hashCode()    {return e.hashCode();}
     }
 
     private static class CheckedEntrySet extends 
AbstractSet<Entry<String,String>> {
         private final Set<Entry<String,String>> s;
         public CheckedEntrySet(Set<Entry<String,String>> s) {this.s = s;}
+        @Override
         public int size()        {return s.size();}
+        @Override
         public boolean isEmpty() {return s.isEmpty();}
+        @Override
         public void clear()      {       s.clear();}
+        @Override
         public Iterator<Entry<String,String>> iterator() {
             return new Iterator<Entry<String,String>>() {
                 Iterator<Entry<String,String>> i = s.iterator();
+                @Override
                 public boolean hasNext() { return i.hasNext();}
+                @Override
                 public Entry<String,String> next() {
                     return new CheckedEntry(i.next());
                 }
@@ -104,18 +119,22 @@ final class ProcessEnvironmentForWin32 extends 
HashMap<String,String> {
             nonNullString(e.getValue());
             return e;
         }
+        @Override
         public boolean contains(Object o) {return s.contains(checkedEntry(o));}
+        @Override
         public boolean remove(Object o)   {return s.remove(checkedEntry(o));}
     }
 
     private static class CheckedValues extends AbstractCollection<String> {
         private final Collection<String> c;
         public CheckedValues(Collection<String> c) {this.c = c;}
+        @Override
         public int size()                  {return c.size();}
         @Override
         public boolean isEmpty()           {return c.isEmpty();}
         @Override
         public void clear()                {       c.clear();}
+        @Override
         public Iterator<String> iterator() {return c.iterator();}
         @Override
         public boolean contains(Object o)  {return 
c.contains(nonNullString(o));}
@@ -126,11 +145,17 @@ final class ProcessEnvironmentForWin32 extends 
HashMap<String,String> {
     private static class CheckedKeySet extends AbstractSet<String> {
         private final Set<String> s;
         public CheckedKeySet(Set<String> s) {this.s = s;}
+        @Override
         public int size()                  {return s.size();}
+        @Override
         public boolean isEmpty()           {return s.isEmpty();}
+        @Override
         public void clear()                {       s.clear();}
+        @Override
         public Iterator<String> iterator() {return s.iterator();}
+        @Override
         public boolean contains(Object o)  {return 
s.contains(nonNullString(o));}
+        @Override
         public boolean remove(Object o)    {return s.remove(nonNullString(o));}
     }
     @Override
@@ -147,6 +172,7 @@ final class ProcessEnvironmentForWin32 extends 
HashMap<String,String> {
     }
 
     private static final class NameComparator implements Comparator<String> {
+        @Override
         public int compare(String s1, String s2) {
             // We can't use String.compareToIgnoreCase since it
             // canonicalizes to lower case, while Windows
@@ -163,7 +189,9 @@ final class ProcessEnvironmentForWin32 extends 
HashMap<String,String> {
                     c2 = Character.toUpperCase(c2);
                     if (c1 != c2)
                         // No overflow because of numeric promotion
+                    {
                         return c1 - c2;
+                    }
                 }
             }
             return n1 - n2;
@@ -171,6 +199,7 @@ final class ProcessEnvironmentForWin32 extends 
HashMap<String,String> {
     }
 
     private static final class EntryComparator implements 
Comparator<Entry<String,String>> {
+        @Override
         public int compare(Entry<String,String> e1,
                            Entry<String,String> e2) {
             return nameComparator.compare(e1.getKey(), e2.getKey());
@@ -278,8 +307,9 @@ final class ProcessEnvironmentForWin32 extends 
HashMap<String,String> {
     // add the environment variable to the child, if it exists in parent
     private static void addToEnvIfSet(StringBuilder sb, String name) {
         String s = getenv(name);
-        if (s != null)
+        if (s != null) {
             addToEnv(sb, name, s);
+        }
     }
 
     private static void addToEnv(StringBuilder sb, String name, String val) {
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessImplForWin32.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessImplForWin32.java
index 4f6d719..1efde52 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessImplForWin32.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/process/ProcessImplForWin32.java
@@ -93,13 +93,15 @@ public class ProcessImplForWin32 extends Process {
         if (append) {
             String path = f.getPath();
             SecurityManager sm = System.getSecurityManager();
-            if (sm != null)
+            if (sm != null) {
                 sm.checkWrite(path);
+            }
             long handle = openForAtomicAppend(path);
             final FileDescriptor fd = new FileDescriptor();
             setHandle(fd, handle);
             return AccessController.doPrivileged(
                     new PrivilegedAction<FileOutputStream>() {
+                        @Override
                         public FileOutputStream run() {
                             return new FileOutputStream(fd);
                         }
@@ -133,30 +135,30 @@ public class ProcessImplForWin32 extends Process {
             } else {
                 stdHandles = new long[3];
 
-                if (redirects[0] == ProcessBuilderForWin32.Redirect.PIPE)
+                if (redirects[0] == ProcessBuilderForWin32.Redirect.PIPE) {
                     stdHandles[0] = -1L;
-                else if (redirects[0] == 
ProcessBuilderForWin32.Redirect.INHERIT)
+                } else if (redirects[0] == 
ProcessBuilderForWin32.Redirect.INHERIT) {
                     stdHandles[0] = getHandle(FileDescriptor.in);
-                else {
+                } else {
                     f0 = new FileInputStream(redirects[0].file());
                     stdHandles[0] = getHandle(f0.getFD());
                 }
 
-                if (redirects[1] == ProcessBuilderForWin32.Redirect.PIPE)
+                if (redirects[1] == ProcessBuilderForWin32.Redirect.PIPE) {
                     stdHandles[1] = -1L;
-                else if (redirects[1] == 
ProcessBuilderForWin32.Redirect.INHERIT)
+                } else if (redirects[1] == 
ProcessBuilderForWin32.Redirect.INHERIT) {
                     stdHandles[1] = getHandle(FileDescriptor.out);
-                else {
+                } else {
                     f1 = newFileOutputStream(redirects[1].file(),
                             redirects[1].append());
                     stdHandles[1] = getHandle(f1.getFD());
                 }
 
-                if (redirects[2] == ProcessBuilderForWin32.Redirect.PIPE)
+                if (redirects[2] == ProcessBuilderForWin32.Redirect.PIPE) {
                     stdHandles[2] = -1L;
-                else if (redirects[2] == 
ProcessBuilderForWin32.Redirect.INHERIT)
+                } else if (redirects[2] == 
ProcessBuilderForWin32.Redirect.INHERIT) {
                     stdHandles[2] = getHandle(FileDescriptor.err);
-                else {
+                } else {
                     f2 = newFileOutputStream(redirects[2].file(),
                             redirects[2].append());
                     stdHandles[2] = getHandle(f2.getFD());
@@ -167,10 +169,19 @@ public class ProcessImplForWin32 extends Process {
         } finally {
             // In theory, close() can throw IOException
             // (although it is rather unlikely to happen here)
-            try { if (f0 != null) f0.close(); }
+            try { if (f0 != null) {
+                f0.close();
+            }
+            }
             finally {
-                try { if (f1 != null) f1.close(); }
-                finally { if (f2 != null) f2.close(); }
+                try { if (f1 != null) {
+                    f1.close();
+                }
+                }
+                finally { if (f2 != null) {
+                    f2.close();
+                }
+                }
             }
         }
 
@@ -193,8 +204,9 @@ public class ProcessImplForWin32 extends Process {
     private static String[] getTokensFromCommand(String command) {
         ArrayList<String> matchList = new ArrayList<>(8);
         Matcher regexMatcher = 
ProcessImplForWin32.LazyPattern.PATTERN.matcher(command);
-        while (regexMatcher.find())
+        while (regexMatcher.find()) {
             matchList.add(regexMatcher.group());
+        }
         return matchList.toArray(new String[matchList.size()]);
     }
 
@@ -378,8 +390,9 @@ public class ProcessImplForWin32 extends Process {
     // .bat files don't include backslashes as part of the quote
     private static int countLeadingBackslash(int verificationType,
                                              CharSequence input, int start) {
-        if (verificationType == VERIFICATION_CMD_BAT)
+        if (verificationType == VERIFICATION_CMD_BAT) {
             return 0;
+        }
         int j;
         for (j = start - 1; j >= 0 && input.charAt(j) == BACKSLASH; j--) {
             // just scanning backwards
@@ -417,8 +430,9 @@ public class ProcessImplForWin32 extends Process {
             String executablePath = new File(cmd[0]).getPath();
 
             // No worry about internal, unpaired ["], and redirection/piping.
-            if (needsEscaping(VERIFICATION_LEGACY, executablePath) )
+            if (needsEscaping(VERIFICATION_LEGACY, executablePath) ) {
                 executablePath = quoteString(executablePath);
+            }
 
             cmdstr = createCommandLine(
                     //legacy mode doesn't worry about extended verification
@@ -442,16 +456,18 @@ public class ProcessImplForWin32 extends Process {
                 // Restore original command line.
                 StringBuilder join = new StringBuilder();
                 // terminal space in command line is ok
-                for (String s : cmd)
+                for (String s : cmd) {
                     join.append(s).append(' ');
+                }
 
                 // Parse the command line again.
                 cmd = getTokensFromCommand(join.toString());
                 executablePath = getExecutablePath(cmd[0]);
 
                 // Check new executable name once more
-                if (security != null)
+                if (security != null) {
                     security.checkExec(executablePath);
+                }
             }
 
             // Quotation protects from interpretation of the [path] argument as
@@ -471,28 +487,29 @@ public class ProcessImplForWin32 extends Process {
 
         AccessController.doPrivileged(
                 new PrivilegedAction<Void>() {
+                    @Override
                     public Void run() {
-                        if (stdHandles[0] == -1L)
+                        if (stdHandles[0] == -1L) {
                             stdinStream = 
ProcessBuilderForWin32.NullOutputStream.INSTANCE;
-                        else {
+                        } else {
                             FileDescriptor stdinFd = new FileDescriptor();
                             setHandle(stdinFd, stdHandles[0]);
                             stdinStream = new BufferedOutputStream(
                                     new FileOutputStream(stdinFd));
                         }
 
-                        if (stdHandles[1] == -1L)
+                        if (stdHandles[1] == -1L) {
                             stdoutStream = 
ProcessBuilderForWin32.NullInputStream.INSTANCE;
-                        else {
+                        } else {
                             FileDescriptor stdoutFd = new FileDescriptor();
                             setHandle(stdoutFd, stdHandles[1]);
                             stdoutStream = new BufferedInputStream(
                                     new FileInputStream(stdoutFd));
                         }
 
-                        if (stdHandles[2] == -1L)
+                        if (stdHandles[2] == -1L) {
                             stderrStream = 
ProcessBuilderForWin32.NullInputStream.INSTANCE;
-                        else {
+                        } else {
                             FileDescriptor stderrFd = new FileDescriptor();
                             setHandle(stderrFd, stdHandles[2]);
                             stderrStream = new FileInputStream(stderrFd);
@@ -501,33 +518,41 @@ public class ProcessImplForWin32 extends Process {
                         return null; }});
     }
 
+    @Override
     public OutputStream getOutputStream() {
         return stdinStream;
     }
 
+    @Override
     public InputStream getInputStream() {
         return stdoutStream;
     }
 
+    @Override
     public InputStream getErrorStream() {
         return stderrStream;
     }
 
+    @Override
     protected void finalize() {
         closeHandle(handle);
     }
 
+    @Override
     public int exitValue() {
         int exitCode = getExitCodeProcess(handle);
-        if (exitCode == STILL_ACTIVE)
+        if (exitCode == STILL_ACTIVE) {
             throw new IllegalThreadStateException("process has not exited");
+        }
         return exitCode;
     }
 
+    @Override
     public int waitFor() throws InterruptedException {
         waitForInterruptibly(handle);
-        if (Thread.interrupted())
+        if (Thread.interrupted()) {
             throw new InterruptedException();
+        }
         return exitValue();
     }
 
@@ -535,8 +560,12 @@ public class ProcessImplForWin32 extends Process {
     public boolean waitFor(long timeout, TimeUnit unit)
             throws InterruptedException
     {
-        if (getExitCodeProcess(handle) != STILL_ACTIVE) return true;
-        if (timeout <= 0) return false;
+        if (getExitCodeProcess(handle) != STILL_ACTIVE) {
+            return true;
+        }
+        if (timeout <= 0) {
+            return false;
+        }
 
         long remainingNanos  = unit.toNanos(timeout);
         long deadline = System.nanoTime() + remainingNanos ;
@@ -545,8 +574,9 @@ public class ProcessImplForWin32 extends Process {
             // Round up to next millisecond
             long msTimeout = TimeUnit.NANOSECONDS.toMillis(remainingNanos + 
999_999L);
             waitForTimeoutInterruptibly(handle, msTimeout);
-            if (Thread.interrupted())
+            if (Thread.interrupted()) {
                 throw new InterruptedException();
+            }
             if (getExitCodeProcess(handle) != STILL_ACTIVE) {
                 return true;
             }
@@ -556,6 +586,7 @@ public class ProcessImplForWin32 extends Process {
         return (getExitCodeProcess(handle) != STILL_ACTIVE);
     }
 
+    @Override
     public void destroy() { terminateProcess(handle); }
 
     @Override
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessInstanceMap.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessInstanceMap.java
index 637d573..58e5411 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessInstanceMap.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessInstanceMap.java
@@ -91,14 +91,24 @@ public class ProcessInstanceMap {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         ProcessInstanceMap that = (ProcessInstanceMap) o;
 
-        if (id != that.id) return false;
-        if (parentProcessInstanceId != that.parentProcessInstanceId) return 
false;
-        if (parentTaskInstanceId != that.parentTaskInstanceId) return false;
+        if (id != that.id) {
+            return false;
+        }
+        if (parentProcessInstanceId != that.parentProcessInstanceId) {
+            return false;
+        }
+        if (parentTaskInstanceId != that.parentTaskInstanceId) {
+            return false;
+        }
         return processInstanceId == that.processInstanceId;
     }
 
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Queue.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Queue.java
index 5d8f7e2..57b678d 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Queue.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Queue.java
@@ -104,13 +104,21 @@ public class Queue {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         Queue queue1 = (Queue) o;
 
-        if (id != queue1.id) return false;
-        if (!queueName.equals(queue1.queueName)) return false;
+        if (id != queue1.id) {
+            return false;
+        }
+        if (!queueName.equals(queue1.queueName)) {
+            return false;
+        }
         return queue.equals(queue1.queue);
     }
 
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Session.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Session.java
index 83bf246..39bf614 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Session.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Session.java
@@ -93,14 +93,24 @@ public class Session {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         Session session = (Session) o;
 
-        if (userId != session.userId) return false;
-        if (!id.equals(session.id)) return false;
-        if (!lastLoginTime.equals(session.lastLoginTime)) return false;
+        if (userId != session.userId) {
+            return false;
+        }
+        if (!id.equals(session.id)) {
+            return false;
+        }
+        if (!lastLoginTime.equals(session.lastLoginTime)) {
+            return false;
+        }
         return ip.equals(session.ip);
     }
 
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Tenant.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Tenant.java
index bf23ad5..a289f4f 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Tenant.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Tenant.java
@@ -166,8 +166,12 @@ public class Tenant {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
         Tenant tenant = (Tenant) o;
 
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/MysqlPerformance.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/MysqlPerformance.java
index 1e1ee78..e7e9c70 100644
--- 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/MysqlPerformance.java
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/utils/MysqlPerformance.java
@@ -56,7 +56,7 @@ public class MysqlPerformance extends BaseDBPerformance{
 
             try (ResultSet rs1 = pstmt.executeQuery("show global variables")) {
                 while(rs1.next()){
-                    
if(rs1.getString(VARIABLE_NAME).equalsIgnoreCase("MAX_CONNECTIONS")){
+                    
if("MAX_CONNECTIONS".equalsIgnoreCase(rs1.getString(VARIABLE_NAME))){
                         monitorRecord.setMaxConnections( 
Long.parseLong(rs1.getString("value")));
                     }
                 }
@@ -64,11 +64,11 @@ public class MysqlPerformance extends BaseDBPerformance{
 
             try (ResultSet rs2 = pstmt.executeQuery("show global status")) {
                 while(rs2.next()){
-                    
if(rs2.getString(VARIABLE_NAME).equalsIgnoreCase("MAX_USED_CONNECTIONS")){
+                    
if("MAX_USED_CONNECTIONS".equalsIgnoreCase(rs2.getString(VARIABLE_NAME))){
                         
monitorRecord.setMaxUsedConnections(Long.parseLong(rs2.getString("value")));
-                    }else 
if(rs2.getString(VARIABLE_NAME).equalsIgnoreCase("THREADS_CONNECTED")){
+                    }else 
if("THREADS_CONNECTED".equalsIgnoreCase(rs2.getString(VARIABLE_NAME))){
                         
monitorRecord.setThreadsConnections(Long.parseLong(rs2.getString("value")));
-                    }else 
if(rs2.getString(VARIABLE_NAME).equalsIgnoreCase("THREADS_RUNNING")){
+                    }else 
if("THREADS_RUNNING".equalsIgnoreCase(rs2.getString(VARIABLE_NAME))){
                         
monitorRecord.setThreadsRunningConnections(Long.parseLong(rs2.getString("value")));
                     }
                 }
diff --git 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/ProcessUtils.java
 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/ProcessUtils.java
index 5074a5e..310ab62 100644
--- 
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/ProcessUtils.java
+++ 
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/ProcessUtils.java
@@ -47,6 +47,14 @@ public class ProcessUtils {
   private final static Logger logger = 
LoggerFactory.getLogger(ProcessUtils.class);
 
   /**
+   * Initialization regularization, solve the problem of pre-compilation 
performance,
+   * avoid the thread safety problem of multi-thread operation
+   */
+  private static final Pattern MACPATTERN = 
Pattern.compile("-[+|-]-\\s(\\d+)");
+
+  private static final Pattern WINDOWSATTERN = Pattern.compile("(\\d+)");
+
+  /**
    * build command line characters
    * @param commandList command list
    * @return command
@@ -356,10 +364,10 @@ public class ProcessUtils {
     // pstree pid get sub pids
     if (OSUtils.isMacOS()) {
       String pids = OSUtils.exeCmd("pstree -sp " + processId);
-      mat = Pattern.compile("-[+|-]-\\s(\\d+)").matcher(pids);
+      mat = MACPATTERN.matcher(pids);
     } else {
       String pids = OSUtils.exeCmd("pstree -p " + processId);
-      mat = Pattern.compile("(\\d+)").matcher(pids);
+      mat = WINDOWSATTERN.matcher(pids);
     }
 
     while (mat.find()){
diff --git 
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/zk/AbstractZKClient.java
 
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/zk/AbstractZKClient.java
index e75e20b..a27a89a 100644
--- 
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/zk/AbstractZKClient.java
+++ 
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/zk/AbstractZKClient.java
@@ -272,7 +272,7 @@ public abstract class AbstractZKClient extends 
ZookeeperCachedOperator {
                        try {
                                mutex.release();
                        } catch (Exception e) {
-                               if(e.getMessage().equals("instance must be 
started before calling this method")){
+                               if("instance must be started before calling 
this method".equals(e.getMessage())){
                                        logger.warn("lock release");
                                }else{
                                        logger.error("lock release failed",e);

Reply via email to