This is an automated email from the ASF dual-hosted git repository.
jackietien 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 b2175ffa672 Added some common interfaces for compatibility
b2175ffa672 is described below
commit b2175ffa6727c4d67ba0509d8516d452fdb0e0d8
Author: shuwenwei <[email protected]>
AuthorDate: Mon Sep 29 20:19:02 2025 +0800
Added some common interfaces for compatibility
---
.../client/async/CnToDnAsyncRequestType.java | 3 ++-
.../apache/iotdb/confignode/manager/ConfigManager.java | 18 +++++++++++++++---
.../iotdb/confignode/manager/PermissionManager.java | 11 ++++++++---
.../iotdb/confignode/manager/ProcedureManager.java | 2 +-
.../manager/load/service/HeartbeatService.java | 2 +-
.../iotdb/confignode/persistence/auth/AuthorInfo.java | 9 +++++++--
.../confignode/procedure/store/ProcedureType.java | 2 ++
.../plan/execution/config/TableConfigTaskVisitor.java | 1 +
.../plan/execution/config/TreeConfigTaskVisitor.java | 1 +
.../db/queryengine/plan/statement/StatementType.java | 3 ++-
.../plan/statement/sys/ShowConfigurationStatement.java | 2 ++
.../resources/conf/iotdb-system.properties.template | 2 +-
.../src/main/thrift/confignode.thrift | 1 +
.../thrift-datanode/src/main/thrift/datanode.thrift | 3 +++
14 files changed, 47 insertions(+), 13 deletions(-)
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/CnToDnAsyncRequestType.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/CnToDnAsyncRequestType.java
index badad8a1fe7..fc7ff81c75b 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/CnToDnAsyncRequestType.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/CnToDnAsyncRequestType.java
@@ -125,5 +125,6 @@ public enum CnToDnAsyncRequestType {
DETECT_TREE_DEVICE_VIEW_FIELD_TYPE,
// audit log and event write-back
- INSERT_RECORD
+ INSERT_RECORD,
+ ENABLE_SEPARATION_OF_ADMIN_POWERS,
}
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 c406b724773..696bf25be6b 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
@@ -369,7 +369,7 @@ public class ConfigManager implements IManager {
NodeInfo nodeInfo = new NodeInfo();
ClusterSchemaInfo clusterSchemaInfo = new ClusterSchemaInfo();
PartitionInfo partitionInfo = new PartitionInfo();
- AuthorInfo authorInfo = new AuthorInfo();
+ AuthorInfo authorInfo = createAuthorInfo();
ProcedureInfo procedureInfo = new ProcedureInfo(this);
UDFInfo udfInfo = new UDFInfo();
TriggerInfo triggerInfo = new TriggerInfo();
@@ -409,8 +409,8 @@ public class ConfigManager implements IManager {
new ClusterSchemaQuotaStatistics(
COMMON_CONF.getSeriesLimitThreshold(),
COMMON_CONF.getDeviceLimitThreshold()));
this.partitionManager = new PartitionManager(this, partitionInfo);
- this.permissionManager = new PermissionManager(this, authorInfo);
- this.procedureManager = new ProcedureManager(this, procedureInfo);
+ this.permissionManager = createPermissionManager(authorInfo);
+ this.procedureManager = createProcedureManager(procedureInfo);
this.udfManager = new UDFManager(this, udfInfo);
this.triggerManager = new TriggerManager(this, triggerInfo);
this.cqManager = new CQManager(this);
@@ -435,6 +435,18 @@ public class ConfigManager implements IManager {
this.consensusManager.get().start();
}
+ protected PermissionManager createPermissionManager(AuthorInfo authorInfo) {
+ return new PermissionManager(this, authorInfo);
+ }
+
+ protected ProcedureManager createProcedureManager(ProcedureInfo
procedureInfo) {
+ return new ProcedureManager(this, procedureInfo);
+ }
+
+ protected AuthorInfo createAuthorInfo() {
+ return new AuthorInfo();
+ }
+
protected void setNodeManager(NodeInfo nodeInfo) {
this.nodeManager = new NodeManager(this, nodeInfo);
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java
index c83ef18e04b..087c7669058 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/PermissionManager.java
@@ -44,8 +44,8 @@ public class PermissionManager {
private static final Logger LOGGER =
LoggerFactory.getLogger(PermissionManager.class);
- private final ConfigManager configManager;
- private final AuthorInfo authorInfo;
+ protected final ConfigManager configManager;
+ protected final AuthorInfo authorInfo;
public PermissionManager(final ConfigManager configManager, final AuthorInfo
authorInfo) {
this.configManager = configManager;
@@ -106,7 +106,7 @@ public class PermissionManager {
}
}
- private ConsensusManager getConsensusManager() {
+ protected ConsensusManager getConsensusManager() {
return configManager.getConsensusManager();
}
@@ -145,4 +145,9 @@ public class PermissionManager {
public String getUserName(long userId) throws AuthException {
return authorInfo.getUserName(userId);
}
+
+ public TSStatus enableSeparationOfPowers(
+ String systemAdminUsername, String securityAdminUsername, String
auditAdminUsername) {
+ throw new UnsupportedOperationException("Enable separation of powers is
not supported");
+ }
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
index 3dcb01de273..913c5dbd306 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
@@ -1799,7 +1799,7 @@ public class ProcedureManager {
* @param procedure The specific procedure
* @return TSStatus the running result of this procedure
*/
- private TSStatus waitingProcedureFinished(Procedure<?> procedure) {
+ protected TSStatus waitingProcedureFinished(Procedure<?> procedure) {
if (procedure == null) {
LOGGER.error("Unexpected null procedure parameters for
waitingProcedureFinished");
return RpcUtils.getStatus(TSStatusCode.INTERNAL_SERVER_ERROR);
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
index 561d49aa443..64322da5bbb 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/service/HeartbeatService.java
@@ -138,7 +138,7 @@ public class HeartbeatService {
});
}
- private TDataNodeHeartbeatReq genHeartbeatReq() {
+ protected TDataNodeHeartbeatReq genHeartbeatReq() {
/* Generate heartbeat request */
TDataNodeHeartbeatReq heartbeatReq = new TDataNodeHeartbeatReq();
heartbeatReq.setHeartbeatTimestamp(System.nanoTime());
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
index ecc04271481..f1248942ebe 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/auth/AuthorInfo.java
@@ -51,8 +51,8 @@ public class AuthorInfo implements SnapshotProcessor {
public static final CommonConfig COMMON_CONFIG =
CommonDescriptor.getInstance().getConfig();
public static final String NO_USER_MSG = "No such user : ";
- private IAuthorizer authorizer;
- private volatile IAuthorPlanExecutor authorPlanExecutor;
+ protected IAuthorizer authorizer;
+ protected volatile IAuthorPlanExecutor authorPlanExecutor;
public AuthorInfo() {
try {
@@ -149,6 +149,11 @@ public class AuthorInfo implements SnapshotProcessor {
return authorPlanExecutor.getUserPermissionInfo(username, type);
}
+ public TSStatus enableSeparationOfAdminPowers(
+ String systemAdminUsername, String securityAdminUsername, String
auditAdminUsername) {
+ throw new UnsupportedOperationException("EnableSeparationOfAdminPowers is
not supported");
+ }
+
@TestOnly
public void clear() throws AuthException {
File userFolder = new File(COMMON_CONFIG.getUserFolder());
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureType.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureType.java
index 76386dde139..620736b9cba 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureType.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/store/ProcedureType.java
@@ -114,6 +114,8 @@ public enum ProcedureType {
/** Auth privilege */
AUTH_OPERATE_PROCEDURE((short) 1300),
+ ENABLE_SEPARATION_OF_ADMIN_POWERS_PROCEDURE((short) 1301),
+
/** TTL */
SET_TTL_PROCEDURE((short) 1400),
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
index 5a90bf70ec9..57b4d5bbdae 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TableConfigTaskVisitor.java
@@ -1387,6 +1387,7 @@ public class TableConfigTaskVisitor extends
AstVisitor<IConfigTask, MPPQueryCont
protected IConfigTask visitRelationalAuthorPlan(
RelationalAuthorStatement node, MPPQueryContext context) {
context.setQueryType(node.getQueryType());
+ node.setExecutedByUserId(context.getUserId());
TSStatus status =
node.checkStatementIsValid(context.getSession().getUserName());
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
throw new AccessDeniedException(status.getMessage());
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
index fd838c71cac..e01dfa918db 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
@@ -312,6 +312,7 @@ public class TreeConfigTaskVisitor extends
StatementVisitor<IConfigTask, MPPQuer
@Override
public IConfigTask visitAuthor(AuthorStatement statement, MPPQueryContext
context) {
+ statement.setExecutedByUserId(context.getUserId());
if (statement.getAuthorType() == AuthorType.UPDATE_USER) {
visitUpdateUser(statement);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java
index 7351c392b52..0836f6f4a35 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementType.java
@@ -188,5 +188,6 @@ public enum StatementType {
SET_CONFIGURATION,
- FAST_LAST_QUERY
+ FAST_LAST_QUERY,
+ SHOW_CONFIGURATION,
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowConfigurationStatement.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowConfigurationStatement.java
index ebbf6e0737f..ed27d68f8a2 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowConfigurationStatement.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/sys/ShowConfigurationStatement.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
import org.apache.iotdb.db.queryengine.plan.statement.IConfigStatement;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
+import org.apache.iotdb.db.queryengine.plan.statement.StatementType;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
import java.util.Collection;
@@ -39,6 +40,7 @@ public class ShowConfigurationStatement extends Statement
implements IConfigStat
public ShowConfigurationStatement(
boolean showAllConfigurations, int nodeId, boolean withDescription) {
+ this.statementType = StatementType.SHOW_CONFIGURATION;
this.showAllConfigurations = showAllConfigurations;
this.nodeId = nodeId;
this.withDescription = withDescription;
diff --git
a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
index c7633fbde5a..207c0507093 100644
---
a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
+++
b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
@@ -2189,4 +2189,4 @@ enable_retry_for_unknown_error=false
# The switch to control if allow null value be included in the "quantity
total" metric statistic.
# effectiveMode: hot_reload
# Datatype: Boolean
-include_null_value_in_write_throughput_metric=false
\ No newline at end of file
+include_null_value_in_write_throughput_metric=false
diff --git a/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
b/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
index d0f535c4b37..5ecf2af1d35 100644
--- a/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
+++ b/iotdb-protocol/thrift-confignode/src/main/thrift/confignode.thrift
@@ -118,6 +118,7 @@ struct TRuntimeConfiguration {
7: optional binary tableInfo
8: required TAuditConfig auditConfig
9: required string superUserName
+ 10: optional bool enableSeparationOfAdminPowers
}
struct TDataNodeRegisterReq {
diff --git a/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
b/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
index 8865f78a4ea..f142928deb2 100644
--- a/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
+++ b/iotdb-protocol/thrift-datanode/src/main/thrift/datanode.thrift
@@ -285,6 +285,9 @@ struct TDataNodeHeartbeatReq {
13: optional map<i32, set<i32>> topology
14: required i64 logicalClock
15: optional list<common.TConsensusGroupId> currentRegionOperations
+ // Using 8 bit to represent 8 bool
+ // lowest bit: enable separation of admin powers
+ 16: optional byte booleanVariables1
}
struct TDataNodeActivation {