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