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 d866bc5dbaf fix snapshot parser null point.
d866bc5dbaf is described below
commit d866bc5dbaf02a3160b4c78bcd731196af24f750
Author: Colin Li <[email protected]>
AuthorDate: Fri Apr 26 02:09:47 2024 +0800
fix snapshot parser null point.
---
.../consensus/request/ConfigPhysicalPlanVisitor.java | 6 ++++++
.../iotdb/confignode/consensus/request/auth/AuthorPlan.java | 3 +++
.../apache/iotdb/confignode/manager/PermissionManager.java | 3 ++-
.../manager/pipe/event/PipeConfigRegionSnapshotEvent.java | 2 +-
.../manager/pipe/extractor/ConfigRegionListeningFilter.java | 5 ++++-
.../pipe/receiver/protocol/IoTDBConfigNodeReceiver.java | 1 +
.../visitor/PipeConfigPhysicalPlanTSStatusVisitor.java | 9 +++++++++
.../confignode/persistence/executor/ConfigPlanExecutor.java | 1 +
.../persistence/schema/CNPhysicalPlanGenerator.java | 9 ++++-----
.../confignode/persistence/CNPhysicalPlanGeneratorTest.java | 3 +++
.../apache/iotdb/db/tools/schema/SRStatementGenerator.java | 13 +++++++++----
11 files changed, 43 insertions(+), 12 deletions(-)
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanVisitor.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanVisitor.java
index 5dab68adc95..bfdf71c7e54 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanVisitor.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanVisitor.java
@@ -67,6 +67,8 @@ public abstract class ConfigPhysicalPlanVisitor<R, C> {
return visitRevokeRole((AuthorPlan) plan, context);
case CreateUser:
return visitCreateUser((AuthorPlan) plan, context);
+ case CreateUserWithRawPassword:
+ return visitCreateRawUser((AuthorPlan) plan, context);
case UpdateUser:
return visitUpdateUser((AuthorPlan) plan, context);
case DropUser:
@@ -141,6 +143,10 @@ public abstract class ConfigPhysicalPlanVisitor<R, C> {
return visitPlan(createUserPlan, context);
}
+ public R visitCreateRawUser(AuthorPlan createRawUserPlan, C context) {
+ return visitPlan(createRawUserPlan, context);
+ }
+
public R visitUpdateUser(AuthorPlan updateUserPlan, C context) {
return visitPlan(updateUserPlan, context);
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/auth/AuthorPlan.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/auth/AuthorPlan.java
index 9edba898e17..0204d013e06 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/auth/AuthorPlan.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/auth/AuthorPlan.java
@@ -263,6 +263,9 @@ public class AuthorPlan extends ConfigPhysicalPlan {
case ListRoleUsers:
type = ConfigPhysicalPlanType.ListRoleUsers.getPlanType();
break;
+ case CreateUserWithRawPassword:
+ type = ConfigPhysicalPlanType.CreateUserWithRawPassword.getPlanType();
+ break;
default:
throw new IllegalArgumentException("Unknown operator: " +
configPhysicalPlanType);
}
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 7e74c7dce03..a6f0e23fcff 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
@@ -64,7 +64,8 @@ public class PermissionManager {
LOGGER.info("Auth: run auth plan: {}", authorPlan.toString());
try {
if (authorPlan.getAuthorType() == ConfigPhysicalPlanType.CreateUser
- || authorPlan.getAuthorType() == ConfigPhysicalPlanType.CreateRole) {
+ || authorPlan.getAuthorType() == ConfigPhysicalPlanType.CreateRole
+ || authorPlan.getAuthorType() ==
ConfigPhysicalPlanType.CreateUserWithRawPassword) {
tsStatus = getConsensusManager().write(authorPlan);
} else {
List<TDataNodeConfiguration> allDataNodes =
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionSnapshotEvent.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionSnapshotEvent.java
index f4c5ad1bd97..407dec4887e 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionSnapshotEvent.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/event/PipeConfigRegionSnapshotEvent.java
@@ -66,7 +66,7 @@ public class PipeConfigRegionSnapshotEvent extends
PipeSnapshotEvent {
Collections.unmodifiableSet(
new HashSet<>(
Arrays.asList(
- ConfigPhysicalPlanType.CreateUser.getPlanType(),
+
ConfigPhysicalPlanType.CreateUserWithRawPassword.getPlanType(),
ConfigPhysicalPlanType.GrantUser.getPlanType()))));
SNAPSHOT_FILE_TYPE_2_CONFIG_PHYSICAL_PLAN_TYPE_MAP.put(
CNSnapshotFileType.USER_ROLE,
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/ConfigRegionListeningFilter.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/ConfigRegionListeningFilter.java
index 33b62aaa754..2f1ee641ba6 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/ConfigRegionListeningFilter.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/extractor/ConfigRegionListeningFilter.java
@@ -113,7 +113,10 @@ public class ConfigRegionListeningFilter {
OPTION_PLAN_MAP.put(
new PartialPath("auth.user.create"),
- Collections.singletonList(ConfigPhysicalPlanType.CreateUser));
+ Collections.unmodifiableList(
+ Arrays.asList(
+ ConfigPhysicalPlanType.CreateUser,
+ ConfigPhysicalPlanType.CreateUserWithRawPassword)));
OPTION_PLAN_MAP.put(
new PartialPath("auth.user.alter"),
Collections.singletonList(ConfigPhysicalPlanType.UpdateUser));
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java
index 88fa0e2411d..502d4b50f73 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java
@@ -279,6 +279,7 @@ public class IoTDBConfigNodeReceiver extends
IoTDBFileReceiver {
case CreateSchemaTemplate:
case CreateUser:
case CreateRole:
+ case CreateUserWithRawPassword:
default:
return configManager.getConsensusManager().write(new
PipeEnrichedPlan(plan));
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/visitor/PipeConfigPhysicalPlanTSStatusVisitor.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/visitor/PipeConfigPhysicalPlanTSStatusVisitor.java
index 5a30b25e4d7..89a9fd4d471 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/visitor/PipeConfigPhysicalPlanTSStatusVisitor.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/visitor/PipeConfigPhysicalPlanTSStatusVisitor.java
@@ -199,6 +199,15 @@ public class PipeConfigPhysicalPlanTSStatusVisitor
return super.visitCreateUser(plan, context);
}
+ @Override
+ public TSStatus visitCreateRawUser(AuthorPlan plan, TSStatus context) {
+ if (context.getCode() == TSStatusCode.USER_ALREADY_EXIST.getStatusCode()) {
+ return new
TSStatus(TSStatusCode.PIPE_RECEIVER_IDEMPOTENT_CONFLICT_EXCEPTION.getStatusCode())
+ .setMessage(context.getMessage());
+ }
+ return super.visitCreateRawUser(plan, context);
+ }
+
@Override
public TSStatus visitUpdateUser(AuthorPlan plan, TSStatus context) {
if (context.getCode() == TSStatusCode.USER_NOT_EXIST.getStatusCode()) {
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
index 5e1543ce665..8bce6987b93 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
@@ -382,6 +382,7 @@ public class ConfigPlanExecutor {
case RevokeRole:
case RevokeRoleFromUser:
case UpdateUser:
+ case CreateUserWithRawPassword:
case CreateUserDep:
case CreateRoleDep:
case DropUserDep:
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
index c50a176d3b4..70a803e69c1 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/CNPhysicalPlanGenerator.java
@@ -80,8 +80,6 @@ public class CNPhysicalPlanGenerator
private static final String STRING_ENCODING = "utf-8";
- // For default password
- private static final String DEFAULT_PASSWORD = "password";
private final ThreadLocal<byte[]> strBufferLocal = new ThreadLocal<>();
private final HashMap<Integer, String> templateTable = new HashMap<>();
@@ -187,10 +185,11 @@ public class CNPhysicalPlanGenerator
}
String user = versionAndName.left;
if (isUser) {
- readString(dataInputStream, STRING_ENCODING, strBufferLocal);
- final AuthorPlan createUser = new
AuthorPlan(ConfigPhysicalPlanType.CreateUser);
+ final String rawPassword = readString(dataInputStream,
STRING_ENCODING, strBufferLocal);
+ final AuthorPlan createUser =
+ new AuthorPlan(ConfigPhysicalPlanType.CreateUserWithRawPassword);
createUser.setUserName(user);
- createUser.setPassword(DEFAULT_PASSWORD);
+ createUser.setPassword(rawPassword);
createUser.setPermissions(new HashSet<>());
createUser.setNodeNameList(new ArrayList<>());
planDeque.add(createUser);
diff --git
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/CNPhysicalPlanGeneratorTest.java
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/CNPhysicalPlanGeneratorTest.java
index 5d0b5cac402..0a4ab4b2a64 100644
---
a/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/CNPhysicalPlanGeneratorTest.java
+++
b/iotdb-core/confignode/src/test/java/org/apache/iotdb/confignode/persistence/CNPhysicalPlanGeneratorTest.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.commons.auth.AuthException;
import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.file.SystemFileFactory;
import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.commons.utils.AuthUtils;
import org.apache.iotdb.commons.utils.FileUtils;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlan;
import org.apache.iotdb.confignode.consensus.request.ConfigPhysicalPlanType;
@@ -183,6 +184,8 @@ public class CNPhysicalPlanGeneratorTest {
plan.setNodeNameList(new ArrayList<>());
// Create user plan 1
authorInfo.authorNonQuery(plan);
+ plan.setAuthorType(ConfigPhysicalPlanType.CreateUserWithRawPassword);
+ plan.setPassword(AuthUtils.encryptPassword("password"));
answerSet.add(plan.hashCode());
plan = new AuthorPlan(ConfigPhysicalPlanType.CreateRole);
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SRStatementGenerator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SRStatementGenerator.java
index 5ea6e86dc9c..cd2517d64c7 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SRStatementGenerator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/tools/schema/SRStatementGenerator.java
@@ -274,9 +274,7 @@ public class SRStatementGenerator implements
Iterator<Statement>, Iterable<State
@Override
public Statement visitMeasurementMNode(
AbstractMeasurementMNode<?, ? extends IMNode<?>> node, PartialPath
path) {
- if (node.getParent().getAsDeviceMNode().isAligned()) {
- return null;
- } else if (node.isLogicalView()) {
+ if (node.isLogicalView()) {
final CreateLogicalViewStatement stmt = new
CreateLogicalViewStatement();
final LogicalViewSchema viewSchema =
(LogicalViewSchema) node.getAsMeasurementMNode().getSchema();
@@ -305,6 +303,8 @@ public class SRStatementGenerator implements
Iterator<Statement>, Iterable<State
// node.setOffset(0);
// }
return stmt;
+ } else if (node.getParent().getAsDeviceMNode().isAligned()) {
+ return null;
} else {
final CreateTimeSeriesStatement stmt = new CreateTimeSeriesStatement();
stmt.setPath(path);
@@ -343,7 +343,12 @@ public class SRStatementGenerator implements
Iterator<Statement>, Iterable<State
if (node.getAsDeviceMNode().isAligned()) {
final CreateAlignedTimeSeriesStatement stmt = new
CreateAlignedTimeSeriesStatement();
stmt.setDevicePath(path);
+ boolean hasMeasurement = false;
for (IMemMNode measurement : measurements.values()) {
+ if (!measurement.isMeasurement() ||
measurement.getAsMeasurementMNode().isLogicalView()) {
+ continue;
+ }
+ hasMeasurement = true;
stmt.addMeasurement(measurement.getName());
stmt.addDataType(measurement.getAsMeasurementMNode().getDataType());
if (measurement.getAlias() != null) {
@@ -372,7 +377,7 @@ public class SRStatementGenerator implements
Iterator<Statement>, Iterable<State
stmt.addTagsList(null);
}
}
- return stmt;
+ return hasMeasurement ? stmt : null;
}
return null;
}