Fix createView NPE issue when region migration #14746

Signed-off-by: OneSizeFitQuorum <tanxinyu@apache.org>
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 18ddd6d..1b474ac 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 @@
 
   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 c518db0..666c53a 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 @@
   @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(