This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new 2de80ba47b2 Revert "Fix that config changes rejected by DN will be
written to CN's config (#14551)" (#14590)
2de80ba47b2 is described below
commit 2de80ba47b2069875bd86759e878108ae0670472
Author: shuwenwei <[email protected]>
AuthorDate: Mon Dec 30 18:33:07 2024 +0800
Revert "Fix that config changes rejected by DN will be written to CN's
config (#14551)" (#14590)
This reverts commit 2c4bb243956f2b2b8c08d3efdd7f71fa6e4bc4e6.
---
.../iotdb/db/it/IoTDBSetConfigurationIT.java | 17 ++---
.../iotdb/confignode/manager/ConfigManager.java | 76 ++++++++--------------
.../iotdb/db/storageengine/StorageEngine.java | 2 -
.../iotdb/commons/conf/ConfigurationFileUtils.java | 16 ++---
4 files changed, 35 insertions(+), 76 deletions(-)
diff --git
a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSetConfigurationIT.java
b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSetConfigurationIT.java
index 5fc44c47d8a..8a792aacc38 100644
---
a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSetConfigurationIT.java
+++
b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSetConfigurationIT.java
@@ -52,7 +52,6 @@ import static org.junit.Assert.assertTrue;
@RunWith(IoTDBTestRunner.class)
@Category({LocalStandaloneIT.class})
public class IoTDBSetConfigurationIT {
-
@BeforeClass
public static void setUp() throws Exception {
EnvFactory.getEnv().initClusterEnvironment();
@@ -109,8 +108,6 @@ public class IoTDBSetConfigurationIT {
} catch (Exception e) {
Assert.fail(e.getMessage());
}
- // set configuration "enable_seq_space_compaction"="false"
- // set configuration "enable_unseq_space_compaction"="false" on 0
Assert.assertTrue(
EnvFactory.getEnv().getConfigNodeWrapperList().stream()
.allMatch(
@@ -119,17 +116,14 @@ public class IoTDBSetConfigurationIT {
nodeWrapper,
"enable_seq_space_compaction=false",
"enable_unseq_space_compaction=false")));
- // set configuration "enable_seq_space_compaction"="false"
Assert.assertTrue(
EnvFactory.getEnv().getDataNodeWrapperList().stream()
.allMatch(
nodeWrapper ->
- checkConfigFileContains(nodeWrapper,
"enable_seq_space_compaction=false")));
- // set configuration "enable_cross_space_compaction"="false" on 1
- assertTrue(
- checkConfigFileContains(
- EnvFactory.getEnv().getDataNodeWrapperList().get(0),
- "enable_cross_space_compaction=false"));
+ checkConfigFileContains(
+ nodeWrapper,
+ "enable_seq_space_compaction=false",
+ "enable_cross_space_compaction=false")));
}
@Test
@@ -246,9 +240,6 @@ public class IoTDBSetConfigurationIT {
assertFalse(
checkConfigFileContains(
EnvFactory.getEnv().getDataNodeWrapper(0),
"default_storage_group_level=-1"));
- assertFalse(
- checkConfigFileContains(
- EnvFactory.getEnv().getConfigNodeWrapper(0),
"default_storage_group_level=-1"));
assertTrue(
checkConfigFileContains(
EnvFactory.getEnv().getDataNodeWrapper(0),
"default_storage_group_level=3"));
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index a0b43ddc7a3..87ceac0acac 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -249,7 +249,6 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.Supplier;
import java.util.stream.Collectors;
import static
org.apache.iotdb.commons.conf.IoTDBConstant.ONE_LEVEL_PATH_WILDCARD;
@@ -1580,62 +1579,41 @@ public class ConfigManager implements IManager {
return tsStatus;
}
}
+ if (currentNodeId == req.getNodeId() || req.getNodeId() < 0) {
+ URL url =
ConfigNodeDescriptor.getPropsUrl(CommonConfig.SYSTEM_CONFIG_NAME);
+ boolean configurationFileFound = (url != null && new
File(url.getFile()).exists());
+ TrimProperties properties = new TrimProperties();
+ properties.putAll(req.getConfigs());
- if (currentNodeId == req.getNodeId()) {
- return setConfigLocally(req, null);
- } else if (req.getNodeId() < 0) {
- // re-config CN in memory -> re-config DN in memory -> re-config DN in
file -> re-config CN in
- // file
- TSStatus finalTsStatus = tsStatus;
- return setConfigLocally(req, () -> broadcastSetConfig(finalTsStatus,
req));
- } else {
- // not for this node, ignore it
- return broadcastSetConfig(tsStatus, req);
+ if (configurationFileFound) {
+ File file = new File(url.getFile());
+ try {
+ ConfigurationFileUtils.updateConfiguration(
+ file,
+ properties,
+ mergedProps -> {
+
ConfigNodeDescriptor.getInstance().loadHotModifiedProps(mergedProps);
+ });
+ } catch (Exception e) {
+ tsStatus = RpcUtils.getStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR,
e.getMessage());
+ }
+ } else {
+ String msg =
+ "Unable to find the configuration file. Some modifications are
made only in memory.";
+ tsStatus = RpcUtils.getStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR,
msg);
+ LOGGER.warn(msg);
+ }
+ if (currentNodeId == req.getNodeId()) {
+ return tsStatus;
+ }
}
- }
-
- private TSStatus broadcastSetConfig(TSStatus thisNodeResult,
TSetConfigurationReq req) {
List<TSStatus> statusListOfOtherNodes = nodeManager.setConfiguration(req);
List<TSStatus> statusList = new ArrayList<>(statusListOfOtherNodes.size()
+ 1);
- statusList.add(thisNodeResult);
+ statusList.add(tsStatus);
statusList.addAll(statusListOfOtherNodes);
return RpcUtils.squashResponseStatusList(statusList);
}
- private TSStatus setConfigLocally(
- TSetConfigurationReq req, Supplier<TSStatus> beforeWriteFileAction) {
- // re-config this node only
- TSStatus tsStatus;
- URL url =
ConfigNodeDescriptor.getPropsUrl(CommonConfig.SYSTEM_CONFIG_NAME);
- boolean configurationFileFound = (url != null && new
File(url.getFile()).exists());
- TrimProperties newProperties = new TrimProperties();
- newProperties.putAll(req.getConfigs());
-
- if (configurationFileFound) {
- File file = new File(url.getFile());
- try {
- tsStatus =
- ConfigurationFileUtils.updateConfiguration(
- file,
- newProperties,
- mergedProps -> {
-
ConfigNodeDescriptor.getInstance().loadHotModifiedProps(mergedProps);
- return beforeWriteFileAction != null
- ? beforeWriteFileAction.get()
- : StatusUtils.OK;
- });
- } catch (Exception e) {
- tsStatus = RpcUtils.getStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR,
e.getMessage());
- }
- } else {
- String msg =
- "Unable to find the configuration file. Some modifications are made
only in memory.";
- tsStatus = RpcUtils.getStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR, msg);
- LOGGER.warn(msg);
- }
- return tsStatus;
- }
-
@Override
public TSStatus startRepairData() {
TSStatus status = confirmLeader();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
index 0e1144919e5..cc0b852e3b0 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/StorageEngine.java
@@ -41,7 +41,6 @@ import org.apache.iotdb.commons.schema.ttl.TTLCache;
import org.apache.iotdb.commons.service.IService;
import org.apache.iotdb.commons.service.ServiceType;
import org.apache.iotdb.commons.utils.PathUtils;
-import org.apache.iotdb.commons.utils.StatusUtils;
import org.apache.iotdb.commons.utils.TestOnly;
import org.apache.iotdb.commons.utils.TimePartitionUtils;
import org.apache.iotdb.consensus.ConsensusFactory;
@@ -687,7 +686,6 @@ public class StorageEngine implements IService {
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
- return StatusUtils.OK;
});
} catch (Exception e) {
if (e instanceof InterruptedException) {
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/ConfigurationFileUtils.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/ConfigurationFileUtils.java
index bd7d561f449..f5702143dd9 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/ConfigurationFileUtils.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/ConfigurationFileUtils.java
@@ -19,10 +19,6 @@
package org.apache.iotdb.commons.conf;
-import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.commons.utils.StatusUtils;
-import org.apache.iotdb.rpc.TSStatusCode;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -252,7 +248,7 @@ public class ConfigurationFileUtils {
return ignoredConfigItems;
}
- public static TSStatus updateConfiguration(
+ public static void updateConfiguration(
File file, Properties newConfigItems, LoadHotModifiedPropsFunc
loadHotModifiedPropertiesFunc)
throws IOException, InterruptedException {
File lockFile = new File(file.getPath() + lockFileSuffix);
@@ -275,10 +271,7 @@ public class ConfigurationFileUtils {
// load hot modified properties
if (loadHotModifiedPropertiesFunc != null) {
- TSStatus status =
loadHotModifiedPropertiesFunc.loadHotModifiedProperties(mergedProps);
- if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- return status;
- }
+ loadHotModifiedPropertiesFunc.loadHotModifiedProperties(mergedProps);
}
// generate new configuration file content in memory
@@ -307,7 +300,7 @@ public class ConfigurationFileUtils {
}
if (newConfigItems.isEmpty()) {
// No configuration needs to be modified
- return StatusUtils.OK;
+ return;
}
logger.info("Updating configuration file {}", file.getAbsolutePath());
try (BufferedWriter writer = new BufferedWriter(new
FileWriter(lockFile))) {
@@ -323,7 +316,6 @@ public class ConfigurationFileUtils {
} finally {
releaseFileLock(lockFile);
}
- return StatusUtils.OK;
}
private static String readConfigLinesWithoutLicense(File file) throws
IOException {
@@ -366,7 +358,7 @@ public class ConfigurationFileUtils {
@FunctionalInterface
public interface LoadHotModifiedPropsFunc {
- TSStatus loadHotModifiedProperties(TrimProperties properties)
+ void loadHotModifiedProperties(TrimProperties properties)
throws IOException, InterruptedException;
}
}