diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeRegionManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeRegionManager.java index 18ddd6db478a..1b474ac72579 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeRegionManager.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeRegionManager.java @@ -100,8 +100,8 @@ private DataNodeRegionManager() {} public ReentrantReadWriteLock getRegionLock(ConsensusGroupId consensusGroupId) { return consensusGroupId instanceof DataRegionId - ? dataRegionLockMap.get((DataRegionId) consensusGroupId) - : schemaRegionLockMap.get((SchemaRegionId) consensusGroupId); + ? dataRegionLockMap.get(consensusGroupId) + : schemaRegionLockMap.get(consensusGroupId); } public TSStatus createSchemaRegion(TRegionReplicaSet regionReplicaSet, String storageGroup) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java index c518db0f08b8..666c53a22491 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/executor/RegionWriteExecutor.java @@ -143,9 +143,14 @@ public RegionWriteExecutor( @SuppressWarnings("squid:S1181") public RegionExecutionResult execute(ConsensusGroupId groupId, PlanNode planNode) { try { - WritePlanNodeExecutionContext context = - new WritePlanNodeExecutionContext(groupId, regionManager.getRegionLock(groupId)); - return planNode.accept(executionVisitor, context); + ReentrantReadWriteLock lock = regionManager.getRegionLock(groupId); + if (lock == null) { + return RegionExecutionResult.create( + false, + "Failed to get the lock of the region because the region is not existed.", + RpcUtils.getStatus(TSStatusCode.NO_AVAILABLE_REGION_GROUP)); + } + return planNode.accept(executionVisitor, new WritePlanNodeExecutionContext(groupId, lock)); } catch (Throwable e) { LOGGER.warn(e.getMessage(), e); return RegionExecutionResult.create(