You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ta...@apache.org on 2024/04/03 10:18:42 UTC
(iotdb) branch master updated: Use UTF-8 to load and store properties file (#12291)
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 5394aa47fa9 Use UTF-8 to load and store properties file (#12291)
5394aa47fa9 is described below
commit 5394aa47fa9fc5deb5f707bf0787b4262052e062
Author: Li Yu Heng <li...@126.com>
AuthorDate: Wed Apr 3 18:18:37 2024 +0800
Use UTF-8 to load and store properties file (#12291)
---
.../iotdb/it/env/cluster/config/MppBaseConfig.java | 4 +++-
.../iotdb/confignode/conf/ConfigNodeDescriptor.java | 6 ++++--
.../iotdb/confignode/conf/ConfigNodeRemoveCheck.java | 4 +++-
.../iotdb/confignode/conf/SystemPropertiesUtils.java | 7 +++++--
.../java/org/apache/iotdb/db/conf/IoTDBDescriptor.java | 10 ++++++----
.../java/org/apache/iotdb/db/conf/IoTDBStartCheck.java | 17 ++++++++++++-----
.../iotdb/db/conf/rest/IoTDBRestServiceDescriptor.java | 4 +++-
.../apache/iotdb/db/protocol/client/ConfigNodeInfo.java | 9 ++++++---
.../org/apache/iotdb/commons/conf/IoTDBConstant.java | 8 +++++++-
.../iotdb/tsfile/common/conf/TSFileDescriptor.java | 4 +++-
10 files changed, 52 insertions(+), 21 deletions(-)
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppBaseConfig.java b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppBaseConfig.java
index 035c5371cc9..04e5dae8872 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppBaseConfig.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/cluster/config/MppBaseConfig.java
@@ -25,6 +25,8 @@ import javax.validation.constraints.NotNull;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Properties;
@@ -84,7 +86,7 @@ public abstract class MppBaseConfig {
return;
}
try (InputStream confInput = Files.newInputStream(Paths.get(filePath))) {
- properties.load(confInput);
+ properties.load(new InputStreamReader(confInput, StandardCharsets.UTF_8));
}
}
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
index e59f8d22343..1bad7b48c5c 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
@@ -39,9 +39,11 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
+import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.Properties;
@@ -105,7 +107,7 @@ public class ConfigNodeDescriptor {
try (InputStream inputStream = url.openStream()) {
LOGGER.info("Start to read config file {}", url);
- commonProperties.load(inputStream);
+ commonProperties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
} catch (FileNotFoundException e) {
LOGGER.error("Fail to find config file {}, reject ConfigNode startup.", url, e);
@@ -128,7 +130,7 @@ public class ConfigNodeDescriptor {
try (InputStream inputStream = url.openStream()) {
LOGGER.info("start reading ConfigNode conf file: {}", url);
Properties properties = new Properties();
- properties.load(inputStream);
+ properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
commonProperties.putAll(properties);
loadProperties(commonProperties);
} catch (IOException | BadNodeUrlException e) {
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
index 62c94bee1f1..331a2a69542 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeRemoveCheck.java
@@ -35,6 +35,8 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
import java.util.Comparator;
import java.util.List;
import java.util.Properties;
@@ -64,7 +66,7 @@ public class ConfigNodeRemoveCheck {
return nodeLocation;
}
try (FileInputStream inputStream = new FileInputStream(systemPropertiesFile)) {
- systemProperties.load(inputStream);
+ systemProperties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
if (isNumeric(args)) {
int id = Integer.parseInt(args);
nodeLocation =
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/SystemPropertiesUtils.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/SystemPropertiesUtils.java
index b9839a37f07..ca7bcb3e9e5 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/SystemPropertiesUtils.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/SystemPropertiesUtils.java
@@ -33,6 +33,9 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -414,7 +417,7 @@ public class SystemPropertiesUtils {
Properties systemProperties = new Properties();
try (FileInputStream inputStream = new FileInputStream(systemPropertiesFile)) {
- systemProperties.load(inputStream);
+ systemProperties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
}
return systemProperties;
}
@@ -423,7 +426,7 @@ public class SystemPropertiesUtils {
throws IOException {
try (FileOutputStream fileOutputStream = new FileOutputStream(systemPropertiesFile)) {
systemProperties.store(
- fileOutputStream,
+ new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8),
" THIS FILE IS AUTOMATICALLY GENERATED. PLEASE DO NOT MODIFY THIS FILE !!!");
fileOutputStream.getFD().sync();
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 75ebb34540b..048afadc585 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -68,8 +68,10 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -163,7 +165,7 @@ public class IoTDBDescriptor {
if (url != null) {
try (InputStream inputStream = url.openStream()) {
LOGGER.info("Start to read config file {}", url);
- commonProperties.load(inputStream);
+ commonProperties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
} catch (FileNotFoundException e) {
LOGGER.error("Fail to find config file {}, reject DataNode startup.", url, e);
System.exit(-1);
@@ -184,7 +186,7 @@ public class IoTDBDescriptor {
try (InputStream inputStream = url.openStream()) {
LOGGER.info("Start to read config file {}", url);
Properties properties = new Properties();
- properties.load(inputStream);
+ properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
commonProperties.putAll(properties);
loadProperties(commonProperties);
} catch (FileNotFoundException e) {
@@ -1640,7 +1642,7 @@ public class IoTDBDescriptor {
Properties commonProperties = new Properties();
try (InputStream inputStream = url.openStream()) {
LOGGER.info("Start to reload config file {}", url);
- commonProperties.load(inputStream);
+ commonProperties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
} catch (Exception e) {
LOGGER.warn("Fail to reload config file {}", url, e);
throw new QueryProcessException(
@@ -1655,7 +1657,7 @@ public class IoTDBDescriptor {
try (InputStream inputStream = url.openStream()) {
LOGGER.info("Start to reload config file {}", url);
Properties properties = new Properties();
- properties.load(inputStream);
+ properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
commonProperties.putAll(properties);
loadHotModifiedProps(commonProperties);
} catch (Exception e) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
index e37df2a3d66..e366ae8c987 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBStartCheck.java
@@ -38,6 +38,8 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;
@@ -176,7 +178,8 @@ public class IoTDBStartCheck {
// write properties to system.properties
try (FileOutputStream outputStream = new FileOutputStream(propertiesFile)) {
systemProperties.forEach((k, v) -> properties.setProperty(k, v.get()));
- properties.store(outputStream, SYSTEM_PROPERTIES_STRING);
+ properties.store(
+ new OutputStreamWriter(outputStream, StandardCharsets.UTF_8), SYSTEM_PROPERTIES_STRING);
}
isFirstStart = true;
return true;
@@ -266,7 +269,8 @@ public class IoTDBStartCheck {
// overwrite system.properties when first start
try (FileOutputStream outputStream = new FileOutputStream(propertiesFile)) {
systemProperties.forEach((k, v) -> properties.setProperty(k, v.get()));
- properties.store(outputStream, SYSTEM_PROPERTIES_STRING);
+ properties.store(
+ new OutputStreamWriter(outputStream, StandardCharsets.UTF_8), SYSTEM_PROPERTIES_STRING);
}
if (config.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.IOT_CONSENSUS)
&& config.getWalMode().equals(WALMode.DISABLE)) {
@@ -309,7 +313,8 @@ public class IoTDBStartCheck {
});
properties.setProperty(IOTDB_VERSION_STRING, IoTDBConstant.VERSION);
properties.setProperty(COMMIT_ID_STRING, IoTDBConstant.BUILD_INFO);
- properties.store(tmpFOS, SYSTEM_PROPERTIES_STRING);
+ properties.store(
+ new OutputStreamWriter(tmpFOS, StandardCharsets.UTF_8), SYSTEM_PROPERTIES_STRING);
// upgrade finished, delete old system.properties file
if (propertiesFile.exists()) {
Files.delete(propertiesFile.toPath());
@@ -380,7 +385,8 @@ public class IoTDBStartCheck {
try {
properties.setProperty(IoTDBConstant.CLUSTER_NAME, clusterName);
properties.setProperty(DATA_NODE_ID, String.valueOf(dataNodeId));
- properties.store(tmpFOS, SYSTEM_PROPERTIES_STRING);
+ properties.store(
+ new OutputStreamWriter(tmpFOS, StandardCharsets.UTF_8), SYSTEM_PROPERTIES_STRING);
// serialize finished, delete old system.properties file
if (propertiesFile.exists()) {
Files.delete(propertiesFile.toPath());
@@ -417,7 +423,8 @@ public class IoTDBStartCheck {
if (needsSerialize) {
try (FileOutputStream outputStream = new FileOutputStream(propertiesFile)) {
systemProperties.forEach((k, v) -> properties.setProperty(k, v.get()));
- properties.store(outputStream, SYSTEM_PROPERTIES_STRING);
+ properties.store(
+ new OutputStreamWriter(outputStream, StandardCharsets.UTF_8), SYSTEM_PROPERTIES_STRING);
}
}
long endTime = System.currentTimeMillis();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/rest/IoTDBRestServiceDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/rest/IoTDBRestServiceDescriptor.java
index aada9813035..f84f6809f74 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/rest/IoTDBRestServiceDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/rest/IoTDBRestServiceDescriptor.java
@@ -28,8 +28,10 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.Properties;
public class IoTDBRestServiceDescriptor {
@@ -64,7 +66,7 @@ public class IoTDBRestServiceDescriptor {
try (InputStream inputStream = url.openStream()) {
logger.info("Start to read config file {}", url);
Properties properties = new Properties();
- properties.load(inputStream);
+ properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
return properties;
} catch (FileNotFoundException e) {
logger.warn("REST service fail to find config file {}", url, e);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/ConfigNodeInfo.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/ConfigNodeInfo.java
index 91050bc73b8..4726366fd27 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/ConfigNodeInfo.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/client/ConfigNodeInfo.java
@@ -34,6 +34,9 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -124,12 +127,12 @@ public class ConfigNodeInfo {
private void storeConfigNode() throws IOException {
Properties properties = new Properties();
try (FileInputStream inputStream = new FileInputStream(propertiesFile)) {
- properties.load(inputStream);
+ properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
}
properties.setProperty(
CONFIG_NODE_LIST, NodeUrlUtils.convertTEndPointUrls(new ArrayList<>(onlineConfigNodes)));
try (FileOutputStream fileOutputStream = new FileOutputStream(propertiesFileTmp)) {
- properties.store(fileOutputStream, "");
+ properties.store(new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8), "");
}
updatePropertiesFile();
}
@@ -151,7 +154,7 @@ public class ConfigNodeInfo {
configNodeInfoReadWriteLock.writeLock().lock();
Properties properties = new Properties();
try (FileInputStream inputStream = new FileInputStream(propertiesFile)) {
- properties.load(inputStream);
+ properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
} catch (IOException e) {
throw new RuntimeException(e);
}
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
index b6697483f9f..88df1615a58 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
@@ -20,8 +20,11 @@
package org.apache.iotdb.commons.conf;
import java.io.File;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.HashSet;
+import java.util.Objects;
import java.util.Properties;
import java.util.Set;
import java.util.regex.Pattern;
@@ -34,7 +37,10 @@ public class IoTDBConstant {
Properties prop = new Properties();
String finalBuildInfo = "UNKNOWN";
try {
- prop.load(IoTDBConstant.class.getResourceAsStream("/git.properties"));
+ prop.load(
+ new InputStreamReader(
+ Objects.requireNonNull(IoTDBConstant.class.getResourceAsStream("/git.properties")),
+ StandardCharsets.UTF_8));
finalBuildInfo = prop.getProperty("git.commit.id.abbrev", "UNKNOWN");
String isDirty = prop.getProperty("git.dirty", "false");
if (isDirty.equalsIgnoreCase("true")) {
diff --git a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
index 3b060507d07..09db06c0fe0 100644
--- a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
+++ b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
@@ -28,9 +28,11 @@ import org.slf4j.LoggerFactory;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.Properties;
@@ -134,7 +136,7 @@ public class TSFileDescriptor {
private Optional<Properties> loadPropertiesFromFile(String filePath) {
try (FileInputStream fileInputStream = new FileInputStream(filePath)) {
Properties properties = new Properties();
- properties.load(fileInputStream);
+ properties.load(new InputStreamReader(fileInputStream, StandardCharsets.UTF_8));
return Optional.of(properties);
} catch (FileNotFoundException e) {
logger.warn("Fail to find config file {}", filePath);