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

tanxinyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new c76952b1631 Fix sonar bugs and code smells in node-common (#10374)
c76952b1631 is described below

commit c76952b1631784c58461e724d8afe8eb4fd5b7ac
Author: Potato <[email protected]>
AuthorDate: Thu Jun 29 14:40:30 2023 +0800

    Fix sonar bugs and code smells in node-common (#10374)
    
    Signed-off-by: OneSizeFitQuorum <[email protected]>
---
 .../security/encrypt/AsymmetricEncryptFactory.java | 27 +++++++++++-----------
 .../commons/udf/service/UDFClassLoaderManager.java | 18 +++++++--------
 2 files changed, 22 insertions(+), 23 deletions(-)

diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/security/encrypt/AsymmetricEncryptFactory.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/security/encrypt/AsymmetricEncryptFactory.java
index 956c889904e..bbb5ae7205d 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/security/encrypt/AsymmetricEncryptFactory.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/security/encrypt/AsymmetricEncryptFactory.java
@@ -19,18 +19,18 @@
 
 package org.apache.iotdb.commons.security.encrypt;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.lang.reflect.InvocationTargetException;
+import java.util.concurrent.atomic.AtomicReference;
 
 public class AsymmetricEncryptFactory {
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(AsymmetricEncryptFactory.class);
 
-  private static volatile AsymmetricEncrypt asymmetricEncrypt;
+  private static final AtomicReference<AsymmetricEncrypt> asymmetricEncrypt =
+      new AtomicReference<>();
+
+  private AsymmetricEncryptFactory() {}
 
   /**
-   * load encrypt provider class for encrypt or decrypt password
+   * load encrypt provider class for encrypt or decrypt password.
    *
    * @param providerClassName encrypt class name
    * @param providerParameter provider parameter
@@ -38,28 +38,27 @@ public class AsymmetricEncryptFactory {
    */
   public static AsymmetricEncrypt getEncryptProvider(
       String providerClassName, String providerParameter) {
-    if (asymmetricEncrypt == null) {
+    if (asymmetricEncrypt.get() == null) {
       synchronized (AsymmetricEncrypt.class) {
-        if (asymmetricEncrypt == null) {
+        if (asymmetricEncrypt.get() == null) {
 
           try {
-            Class providerClass =
+            Class<?> providerClass =
                 
getClassLoaderForClass(AsymmetricEncrypt.class).loadClass(providerClassName);
-            asymmetricEncrypt =
-                (AsymmetricEncrypt) 
providerClass.getDeclaredConstructor().newInstance();
-            asymmetricEncrypt.init(providerParameter);
+            asymmetricEncrypt.set(
+                (AsymmetricEncrypt) 
providerClass.getDeclaredConstructor().newInstance());
+            asymmetricEncrypt.get().init(providerParameter);
           } catch (ClassNotFoundException
               | NoSuchMethodException
               | InstantiationException
               | IllegalAccessException
               | InvocationTargetException e) {
-            LOGGER.error("Failed to load encryption class", e);
             throw new EncryptDecryptException(e);
           }
         }
       }
     }
-    return asymmetricEncrypt;
+    return asymmetricEncrypt.get();
   }
 
   private static ClassLoader getClassLoaderForClass(Class<?> c) {
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/service/UDFClassLoaderManager.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/service/UDFClassLoaderManager.java
index 1ee3f4f78f9..b20d51426f8 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/service/UDFClassLoaderManager.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/service/UDFClassLoaderManager.java
@@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicReference;
 
 public class UDFClassLoaderManager implements IService {
 
@@ -45,18 +46,17 @@ public class UDFClassLoaderManager implements IService {
    * user executes CREATE FUNCTION or after the user executes DROP FUNCTION. 
Therefore, we need to
    * continuously maintain the activeClassLoader so that the classes it loads 
are always up-to-date.
    */
-  private volatile UDFClassLoader activeClassLoader;
+  private final AtomicReference<UDFClassLoader> activeClassLoader = new 
AtomicReference<>();
 
   private UDFClassLoaderManager(String libRoot) {
     this.libRoot = libRoot;
     LOGGER.info("UDF lib root: {}", libRoot);
     queryIdToUDFClassLoaderMap = new ConcurrentHashMap<>();
-    activeClassLoader = null;
   }
 
   public void initializeUDFQuery(String queryId) {
-    activeClassLoader.acquire();
-    queryIdToUDFClassLoaderMap.put(queryId, activeClassLoader);
+    activeClassLoader.get().acquire();
+    queryIdToUDFClassLoaderMap.put(queryId, activeClassLoader.get());
   }
 
   public void finalizeUDFQuery(String queryId) {
@@ -72,16 +72,16 @@ public class UDFClassLoaderManager implements IService {
   }
 
   public UDFClassLoader updateAndGetActiveClassLoader() throws IOException {
-    UDFClassLoader deprecatedClassLoader = activeClassLoader;
-    activeClassLoader = new UDFClassLoader(libRoot);
+    UDFClassLoader deprecatedClassLoader = activeClassLoader.get();
+    activeClassLoader.set(new UDFClassLoader(libRoot));
     if (deprecatedClassLoader != null) {
       deprecatedClassLoader.markAsDeprecated();
     }
-    return activeClassLoader;
+    return activeClassLoader.get();
   }
 
   public UDFClassLoader getActiveClassLoader() {
-    return activeClassLoader;
+    return activeClassLoader.get();
   }
 
   
/////////////////////////////////////////////////////////////////////////////////////////////////
@@ -92,7 +92,7 @@ public class UDFClassLoaderManager implements IService {
   public void start() throws StartupException {
     try {
       SystemFileFactory.INSTANCE.makeDirIfNecessary(libRoot);
-      activeClassLoader = new UDFClassLoader(libRoot);
+      activeClassLoader.set(new UDFClassLoader(libRoot));
     } catch (IOException e) {
       throw new StartupException(this.getID().getName(), e.getMessage());
     }

Reply via email to