This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch fix_sonar_202405 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 7b4a1bbc2d77cc4ad28f2e7bd2c4a93112cafa17 Author: HTHou <[email protected]> AuthorDate: Tue May 21 09:55:44 2024 +0800 fix sonar bug step 1 --- .../java/org/apache/iotdb/tool/ImportData.java | 6 ++---- .../org/apache/iotdb/tool/IoTDBDataBackTool.java | 19 +++++++++--------- .../org/apache/iotdb/session/NodesSupplier.java | 2 +- .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 23 ++++++++++++++++------ .../protocol/thrift/IoTDBDataNodeReceiver.java | 5 +++++ .../pbtree/schemafile/pagemgr/PageManager.java | 8 ++++---- .../apache/iotdb/commons/conf/CommonConfig.java | 6 +++--- 7 files changed, 41 insertions(+), 28 deletions(-) diff --git a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java index 1fba1f67020..0943adc9225 100644 --- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java +++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/ImportData.java @@ -40,7 +40,6 @@ import org.apache.commons.cli.Options; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.thrift.annotation.Nullable; import org.apache.tsfile.common.constant.TsFileConstant; @@ -488,12 +487,11 @@ public class ImportData extends AbstractDataTool { } catch (IOException e) { ioTPrinter.println("Cannot dump fail result because: " + e.getMessage()); } finally { - if (ObjectUtils.isNotEmpty(writer)) { + if (writer != null) { try { writer.flush(); writer.close(); - } catch (IOException e) { - ; + } catch (IOException ignore) { } } } diff --git a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/IoTDBDataBackTool.java b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/IoTDBDataBackTool.java index c9d9df6aae6..cc8ca668082 100644 --- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/IoTDBDataBackTool.java +++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/IoTDBDataBackTool.java @@ -173,7 +173,7 @@ public class IoTDBDataBackTool { return isVaild; } - public static void main(String[] args) { + public static void main(String[] args) throws IOException { System.setProperty("IOTDB_HOME", System.getenv("IOTDB_HOME")); argsParse(args); File sourceDir = new File(sourcePath); @@ -1041,15 +1041,14 @@ public class IoTDBDataBackTool { public static void propertiesFileUpdate(String filePath, String key, String newValue) { try { newValue = formatPathForOS(newValue); - FileInputStream fileInputStream = new FileInputStream(filePath); - BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream)); - List<String> lines = new ArrayList<>(); - String line; - while ((line = reader.readLine()) != null) { - lines.add(line); + try (FileInputStream fileInputStream = new FileInputStream(filePath); + BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream))) { + String line; + while ((line = reader.readLine()) != null) { + lines.add(line); + } } - reader.close(); boolean keyFound = false; for (int i = 0; i < lines.size(); i++) { @@ -1121,11 +1120,11 @@ public class IoTDBDataBackTool { return 0; } - public static void delFile(String filename) { + public static void delFile(String filename) throws IOException { filename = sourcePath + File.separatorChar + "logs" + File.separatorChar + filename; File file = new File(filename); if (file.exists()) { - file.delete(); + Files.delete(file.toPath()); } } diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java index 37532023ce6..28bc8a829f9 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/NodesSupplier.java @@ -58,7 +58,7 @@ public class NodesSupplier implements INodeSupplier, Runnable { // availableNodes won't be updated frequently, so we use CopyOnWriteArrayList which is thread-safe // and is optimized for scenarios of reading more and writing less - private volatile List<TEndPoint> availableNodes = new CopyOnWriteArrayList<>(); + private List<TEndPoint> availableNodes = new CopyOnWriteArrayList<>(); private final boolean useSSL; private final String trustStore; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java index 5e481330d09..e68aeccf5e5 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java @@ -1306,6 +1306,15 @@ public class IoTDBConfig { void reloadDataDirs(String[][] tierDataDirs) throws LoadConfigurationException { // format data directories formulateDataDirs(tierDataDirs); + // make sure the tiers number not reduced + if (this.tierDataDirs.length > tierDataDirs.length) { + String msg = + String.format( + "The tiers number is reduced from %d from %d please add it back.", + this.tierDataDirs.length, tierDataDirs.length); + logger.error(msg); + throw new LoadConfigurationException(msg); + } // make sure old data directories not removed for (int i = 0; i < this.tierDataDirs.length; ++i) { HashSet<String> newDirs = new HashSet<>(Arrays.asList(tierDataDirs[i])); @@ -1399,12 +1408,14 @@ public class IoTDBConfig { } public void setTierDataDirs(String[][] tierDataDirs) { - formulateDataDirs(tierDataDirs); - this.tierDataDirs = tierDataDirs; - // TODO(szywilliam): rewrite the logic here when ratis supports complete snapshot semantic - setRatisDataRegionSnapshotDir( - tierDataDirs[0][0] + File.separator + IoTDBConstant.SNAPSHOT_FOLDER_NAME); - setLoadTsFileDir(tierDataDirs[0][0] + File.separator + IoTDBConstant.LOAD_TSFILE_FOLDER_NAME); + if (tierDataDirs.length > 0 && tierDataDirs[0].length > 0) { + formulateDataDirs(tierDataDirs); + this.tierDataDirs = tierDataDirs; + // TODO(szywilliam): rewrite the logic here when ratis supports complete snapshot semantic + setRatisDataRegionSnapshotDir( + tierDataDirs[0][0] + File.separator + IoTDBConstant.SNAPSHOT_FOLDER_NAME); + setLoadTsFileDir(tierDataDirs[0][0] + File.separator + IoTDBConstant.LOAD_TSFILE_FOLDER_NAME); + } } public String getRpcAddress() { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java index dfd8be444b6..9c14c074178 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java @@ -401,6 +401,11 @@ public class IoTDBDataNodeReceiver extends IoTDBFileReceiver { } private TSStatus executeStatementAndClassifyExceptions(final Statement statement) { + if (statement == null) { + return RpcUtils.getStatus( + TSStatusCode.PIPE_TRANSFER_EXECUTE_STATEMENT_ERROR, "Execute null statement."); + } + try { final TSStatus result = executeStatement(statement); if (result.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode() diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/pagemgr/PageManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/pagemgr/PageManager.java index 06d8c279844..f5aa032c653 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/pagemgr/PageManager.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/pagemgr/PageManager.java @@ -710,21 +710,21 @@ public abstract class PageManager implements IPageManager { if (batchSize < SchemaFileConfig.SEG_SIZE_METRIC[0]) { return reEstimateSegSize(expSize); } - int base_tier = 0; + int baseTier = 0; for (int i = 0; i < SchemaFileConfig.SEG_SIZE_LST.length; i++) { if (SchemaFileConfig.SEG_SIZE_LST[i] >= expSize) { - base_tier = i; + baseTier = i; break; } } int tier = SchemaFileConfig.SEG_SIZE_LST.length - 1; - while (tier >= base_tier) { + while (tier >= baseTier) { if (batchSize > SchemaFileConfig.SEG_SIZE_METRIC[tier]) { return SchemaFileConfig.SEG_SIZE_LST[tier]; } tier--; } - return SchemaFileConfig.SEG_SIZE_LST[base_tier]; + return SchemaFileConfig.SEG_SIZE_LST[baseTier]; } private static short reEstimateSegSize(int expSize) throws MetadataException { diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java index 8cc7ff7eefa..6563c1fde4d 100644 --- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java +++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java @@ -231,9 +231,9 @@ public class CommonConfig { private long pipeListeningQueueTransferSnapshotThreshold = 1000; private int pipeSnapshotExecutionMaxBatchSize = 1000; - private long twoStageAggregateMaxCombinerLiveTimeInMs = 8 * 60 * 1000; // 8 minutes - private long twoStageAggregateDataRegionInfoCacheTimeInMs = 3 * 60 * 1000; // 3 minutes - private long twoStageAggregateSenderEndPointsCacheInMs = 3 * 60 * 1000; // 3 minutes + private long twoStageAggregateMaxCombinerLiveTimeInMs = (long) 8 * 60 * 1000; // 8 minutes + private long twoStageAggregateDataRegionInfoCacheTimeInMs = (long) 3 * 60 * 1000; // 3 minutes + private long twoStageAggregateSenderEndPointsCacheInMs = (long) 3 * 60 * 1000; // 3 minutes private int subscriptionSubtaskExecutorMaxThreadNum = Math.min(5, Math.max(1, Runtime.getRuntime().availableProcessors() / 2));
