未验证 提交 c76952b1 编写于 作者: P Potato 提交者: GitHub

Fix sonar bugs and code smells in node-common (#10374)

Signed-off-by: NOneSizeFitQuorum <tanxinyu@apache.org>
上级 37a66a68
......@@ -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) {
......
......@@ -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());
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册