diff options
| author | chaoc <[email protected]> | 2023-12-27 15:00:05 +0800 |
|---|---|---|
| committer | chaoc <[email protected]> | 2023-12-27 15:00:05 +0800 |
| commit | e78ad536eed22e21c899804464b4b0c504e8a1fb (patch) | |
| tree | 5655178762cad1e9033bd49612eab362062cc717 | |
| parent | 1991801a2fc8e47007a3efd251fe2a43bef96c03 (diff) | |
style: add some issues found during code review and some suggestions for fixes
11 files changed, 22 insertions, 0 deletions
diff --git a/groot-common/src/main/java/com/geedgenetworks/common/config/CommonConfig.java b/groot-common/src/main/java/com/geedgenetworks/common/config/CommonConfig.java index 775ee13..f0edbd2 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/config/CommonConfig.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/config/CommonConfig.java @@ -37,10 +37,12 @@ public class CommonConfig { } br.close(); } else { + // FIXME System.out.println("udf-plugin配置文件不存在"); } } catch (Exception e) { + // FIXME e.printStackTrace(); } } diff --git a/groot-common/src/main/java/com/geedgenetworks/common/config/GrootStreamConfigBuilder.java b/groot-common/src/main/java/com/geedgenetworks/common/config/GrootStreamConfigBuilder.java index 83d7b87..2e6a247 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/config/GrootStreamConfigBuilder.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/config/GrootStreamConfigBuilder.java @@ -62,6 +62,7 @@ public class GrootStreamConfigBuilder extends AbstractYamlConfigBuilder { } catch (Exception ex) { throw new InvalidConfigurationException("Invalid YAML configuration", ex); } finally { + // FIXME 试图关闭一个作用域不仅限于当前类的资源 IOUtil.closeResource(in); } YamlNode grootStreamRoot = @@ -80,6 +81,7 @@ public class GrootStreamConfigBuilder extends AbstractYamlConfigBuilder { } public GrootStreamConfigBuilder setProperties(Properties properties) { if (properties == null) { + // FIXME 试图修改函数实参 properties = System.getProperties(); } setPropertiesInternal(properties); diff --git a/groot-common/src/main/java/com/geedgenetworks/common/config/GrootStreamDomConfigProcessor.java b/groot-common/src/main/java/com/geedgenetworks/common/config/GrootStreamDomConfigProcessor.java index 61c4855..d0c3fae 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/config/GrootStreamDomConfigProcessor.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/config/GrootStreamDomConfigProcessor.java @@ -3,6 +3,7 @@ package com.geedgenetworks.common.config; import com.hazelcast.internal.config.AbstractDomConfigProcessor; import com.hazelcast.logging.ILogger; import com.hazelcast.logging.Logger; +import org.slf4j.LoggerFactory; import org.w3c.dom.Node; import java.util.ArrayList; @@ -13,6 +14,7 @@ import java.util.Map; import static com.hazelcast.internal.config.DomConfigHelper.*; public class GrootStreamDomConfigProcessor extends AbstractDomConfigProcessor { + // TODO 日志规范:使用日志门面 slf4j 代替 private static final ILogger LOGGER = Logger.getLogger(GrootStreamDomConfigProcessor.class); private final GrootStreamConfig config; diff --git a/groot-common/src/main/java/com/geedgenetworks/common/config/GrootYamlParser.java b/groot-common/src/main/java/com/geedgenetworks/common/config/GrootYamlParser.java index 2fbb680..8aa9915 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/config/GrootYamlParser.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/config/GrootYamlParser.java @@ -35,6 +35,7 @@ public final class GrootYamlParser { for (int i = 0; i < keys.length - 1; i++) { Object value = data.get(keys[i]); + // TODO 重复的分支 if (value == null || !(value instanceof Map)) { return null; } diff --git a/groot-common/src/main/java/com/geedgenetworks/common/config/UDFPluginConfigBuilder.java b/groot-common/src/main/java/com/geedgenetworks/common/config/UDFPluginConfigBuilder.java index 67e0a5a..3fb83da 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/config/UDFPluginConfigBuilder.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/config/UDFPluginConfigBuilder.java @@ -22,6 +22,7 @@ public class UDFPluginConfigBuilder extends AbstractConfigBuilder { public UDFPluginConfigBuilder(UDFPluginConfigLocator locator) { if (locator == null) { + // FIXME 试图修改函数实参 locator = new UDFPluginConfigLocator(); locator.locateEverywhere(); } @@ -42,6 +43,7 @@ public class UDFPluginConfigBuilder extends AbstractConfigBuilder { throw new RuntimeException(e); } finally { + // FIXME 试图关闭外部资源 IOUtil.closeResource(this.in); } diff --git a/groot-common/src/main/java/com/geedgenetworks/common/config/UDFPluginConfigLocator.java b/groot-common/src/main/java/com/geedgenetworks/common/config/UDFPluginConfigLocator.java index 49da576..e5d1974 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/config/UDFPluginConfigLocator.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/config/UDFPluginConfigLocator.java @@ -11,6 +11,7 @@ import java.util.Collections; @Slf4j public final class UDFPluginConfigLocator extends AbstractConfigLocator { + // TODO 使用 Collections.singletonList() 代替 public static Collection<String> ALL_ACCEPTED_SUFFIXES = Collections.unmodifiableList(Arrays.asList("plugins")); diff --git a/groot-common/src/main/java/com/geedgenetworks/common/utils/DistributedLock.java b/groot-common/src/main/java/com/geedgenetworks/common/utils/DistributedLock.java index 0793115..56ba733 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/utils/DistributedLock.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/utils/DistributedLock.java @@ -51,7 +51,9 @@ public class DistributedLock implements Lock, Watcher { ROOT_LOCK, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); } } catch (IOException | InterruptedException | KeeperException e) { + // TODO 异常处理 logger.error("Node already exists!"); + } } @@ -65,6 +67,7 @@ public class DistributedLock implements Lock, Watcher { @Override public void lock() { + // FIXME exceptionList 任何时候都为空,没有被更新 if (exceptionList.size() > 0) { throw new LockException(exceptionList.get(0)); } @@ -145,9 +148,11 @@ public class DistributedLock implements Lock, Watcher { Stat stat = zk.exists(ROOT_LOCK + "/" + prev, true); if (stat != null) { + // FIXME 尝试修改一个并发环境下的变量,可能存在可见性的安全问题 this.countDownLatch = new CountDownLatch(1); // 计数等待,若等到前一个节点消失,则precess中进行countDown,停止等待,获取锁 this.countDownLatch.await(waitTime, TimeUnit.MILLISECONDS); + // FIXME 等待前后对 latch 对象进行了重置,理论上 等待操作将永远超时,永远无法成功。 this.countDownLatch = null; } return true; diff --git a/groot-common/src/main/java/com/geedgenetworks/common/utils/FileUtils.java b/groot-common/src/main/java/com/geedgenetworks/common/utils/FileUtils.java index 00a9a82..97d1196 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/utils/FileUtils.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/utils/FileUtils.java @@ -70,6 +70,7 @@ public class FileUtils { public static void createParentFile(File file) { File parentFile = file.getParentFile(); if (null != parentFile && !parentFile.exists()) { + // FIXME 逻辑混乱,先创建了父文件夹?再创建父文件夹的父文件夹? 如果前者能创建成功则不需要后者,如果前者创建不成功也不会执行后者。 parentFile.mkdirs(); createParentFile(parentFile); } @@ -86,6 +87,7 @@ public class FileUtils { file.delete(); } + // FIXME 当文件不存在时:仅仅创建了父文件夹?并没有创建文件! if (!file.getParentFile().exists()) { createParentFile(file); } diff --git a/groot-common/src/main/java/com/geedgenetworks/common/utils/HttpClientUtils.java b/groot-common/src/main/java/com/geedgenetworks/common/utils/HttpClientUtils.java index c68555f..fe75bb1 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/utils/HttpClientUtils.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/utils/HttpClientUtils.java @@ -45,6 +45,7 @@ import java.util.Map; public class HttpClientUtils { /** 全局连接池对象 */ + // FIXME 连接池并没有被使用! private static final PoolingHttpClientConnectionManager CONN_MANAGER = new PoolingHttpClientConnectionManager(); @@ -346,6 +347,7 @@ public class HttpClientUtils { logger.error("Release Connection error:{}", e.getMessage()); } } + // TODO return 代码块应先于 finally 代码块一步被压入方法栈 return result; } } @@ -391,6 +393,7 @@ public class HttpClientUtils { } } + // FIXME 同上 return result; } } diff --git a/groot-common/src/main/java/com/geedgenetworks/common/utils/JsonPathUtil.java b/groot-common/src/main/java/com/geedgenetworks/common/utils/JsonPathUtil.java index dcba58c..8a2f66f 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/utils/JsonPathUtil.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/utils/JsonPathUtil.java @@ -13,6 +13,7 @@ import java.util.concurrent.ConcurrentHashMap; * @date 2023/5/1917:51 */ public class JsonPathUtil { + // TODO 建议使用日志门面 private static final Log logger = LogFactory.get(); private static Map<String, JSONPath> jsonPathMap = new ConcurrentHashMap<>(16); diff --git a/groot-common/src/main/java/com/geedgenetworks/common/utils/ReflectionUtils.java b/groot-common/src/main/java/com/geedgenetworks/common/utils/ReflectionUtils.java index 007c55f..8430c07 100644 --- a/groot-common/src/main/java/com/geedgenetworks/common/utils/ReflectionUtils.java +++ b/groot-common/src/main/java/com/geedgenetworks/common/utils/ReflectionUtils.java @@ -12,6 +12,7 @@ public class ReflectionUtils { Optional<Method> method = Optional.empty(); Method m; + // TODO 使用 getMethod + getDeclaredMethod 代替 循环 + getSuperclass for (; clazz != null; clazz = clazz.getSuperclass()) { try { m = clazz.getDeclaredMethod(methodName, parameterTypes); |
