This is an automated email from the ASF dual-hosted git repository.

tanxinyu 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 b6fea634d61 Add some supplementary logs during partition allocation 
(#15234)
b6fea634d61 is described below

commit b6fea634d6199062dc0211cdd6a189625fa59b80
Author: Yongzao <[email protected]>
AuthorDate: Mon Mar 31 20:15:13 2025 +0800

    Add some supplementary logs during partition allocation (#15234)
    
    * finished
    
    * add database not exists exception
    
    * Update 
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
    
    Co-authored-by: Copilot <[email protected]>
    
    * Update 
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
    
    Co-authored-by: Copilot <[email protected]>
    
    ---------
    
    Co-authored-by: Copilot <[email protected]>
---
 .../manager/partition/PartitionManager.java        | 67 ++++++++++++++++++----
 .../impl/schema/DeleteDatabaseProcedure.java       |  4 +-
 2 files changed, 60 insertions(+), 11 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
index 29afb2c2c1a..fa051b74155 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
@@ -110,10 +110,12 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.Queue;
 import java.util.Set;
+import java.util.StringJoiner;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -248,6 +250,21 @@ public class PartitionManager {
         return resp;
       }
 
+      // Here we check if the related Databases exist again,
+      // due to we don't have a transaction mechanism.
+      for (final String database : req.getPartitionSlotsMap().keySet()) {
+        if (!isDatabaseExist(database)) {
+          return new SchemaPartitionResp(
+              new TSStatus(TSStatusCode.DATABASE_NOT_EXIST.getStatusCode())
+                  .setMessage(
+                      String.format(
+                          "Create SchemaPartition failed because the database: 
%s does not exist",
+                          database)),
+              false,
+              null);
+        }
+      }
+
       // Filter unassigned SchemaPartitionSlots
       final Map<String, List<TSeriesPartitionSlot>> 
unassignedSchemaPartitionSlotsMap =
           
partitionInfo.filterUnassignedSchemaPartitionSlots(req.getPartitionSlotsMap());
@@ -311,14 +328,19 @@ public class PartitionManager {
       final AtomicInteger unassignedSlotNum = new AtomicInteger();
       final Map<String, List<TSeriesPartitionSlot>> 
unassignedSchemaPartitionSlotsMap =
           
partitionInfo.filterUnassignedSchemaPartitionSlots(req.getPartitionSlotsMap());
+      StringJoiner errDatabases = new StringJoiner(", ", "[", "]");
       unassignedSchemaPartitionSlotsMap.forEach(
-          (database, unassignedSchemaPartitionSlots) ->
-              
unassignedSlotNum.addAndGet(unassignedSchemaPartitionSlots.size()));
+          (database, unassignedSchemaPartitionSlots) -> {
+            if (!unassignedSchemaPartitionSlots.isEmpty()) {
+              errDatabases.add(database);
+              
unassignedSlotNum.addAndGet(unassignedSchemaPartitionSlots.size());
+            }
+          });
 
       final String errMsg =
           String.format(
-              "Lacked %d/%d SchemaPartition allocation result in the response 
of getOrCreateSchemaPartition method",
-              unassignedSlotNum.get(), totalSlotNum.get());
+              "Lacked %d/%d SchemaPartition allocation result when get or 
create schema partitions for databases: %s",
+              unassignedSlotNum.get(), totalSlotNum.get(), errDatabases);
       LOGGER.error(errMsg);
       resp.setStatus(
           new 
TSStatus(TSStatusCode.LACK_PARTITION_ALLOCATION.getStatusCode()).setMessage(errMsg));
@@ -373,6 +395,21 @@ public class PartitionManager {
         return resp;
       }
 
+      // Here we check if the related Databases exist again,
+      // due to we don't have a transaction mechanism.
+      for (final String database : req.getPartitionSlotsMap().keySet()) {
+        if (!isDatabaseExist(database)) {
+          return new DataPartitionResp(
+              new TSStatus(TSStatusCode.DATABASE_NOT_EXIST.getStatusCode())
+                  .setMessage(
+                      String.format(
+                          "Create DataPartition failed because the database: 
%s does not exist",
+                          database)),
+              false,
+              null);
+        }
+      }
+
       // Filter unassigned DataPartitionSlots
       Map<String, Map<TSeriesPartitionSlot, TTimeSlotList>> 
unassignedDataPartitionSlotsMap =
           
partitionInfo.filterUnassignedDataPartitionSlots(req.getPartitionSlotsMap());
@@ -446,16 +483,26 @@ public class PartitionManager {
       AtomicInteger unassignedSlotNum = new AtomicInteger();
       Map<String, Map<TSeriesPartitionSlot, TTimeSlotList>> 
unassignedDataPartitionSlotsMap =
           
partitionInfo.filterUnassignedDataPartitionSlots(req.getPartitionSlotsMap());
+      StringJoiner errDatabases = new StringJoiner(", ", "[", "]");
       unassignedDataPartitionSlotsMap.forEach(
-          (database, unassignedDataPartitionSlots) ->
-              unassignedDataPartitionSlots.forEach(
-                  (seriesPartitionSlot, timeSlotList) ->
-                      
unassignedSlotNum.addAndGet(timeSlotList.getTimePartitionSlots().size())));
+          (database, unassignedDataPartitionSlots) -> {
+            AtomicBoolean hasUnassignedSlot = new AtomicBoolean(false);
+            unassignedDataPartitionSlots.forEach(
+                (seriesPartitionSlot, timeSlotList) -> {
+                  if (!timeSlotList.getTimePartitionSlots().isEmpty()) {
+                    hasUnassignedSlot.set(true);
+                    
unassignedSlotNum.addAndGet(timeSlotList.getTimePartitionSlots().size());
+                  }
+                });
+            if (hasUnassignedSlot.get()) {
+              errDatabases.add(database);
+            }
+          });
 
       String errMsg =
           String.format(
-              "Lacked %d/%d DataPartition allocation result in the response of 
getOrCreateDataPartition method",
-              unassignedSlotNum.get(), totalSlotNum.get());
+              "Lacked %d/%d DataPartition allocation result when get or create 
data partitions for databases: %s",
+              unassignedSlotNum.get(), totalSlotNum.get(), errDatabases);
       LOGGER.error(errMsg);
       resp.setStatus(
           new 
TSStatus(TSStatusCode.LACK_PARTITION_ALLOCATION.getStatusCode()).setMessage(errMsg));
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteDatabaseProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteDatabaseProcedure.java
index 5fc81587163..652ccc75a24 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteDatabaseProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/DeleteDatabaseProcedure.java
@@ -197,7 +197,9 @@ public class DeleteDatabaseProcedure
           env.getConfigManager()
               .getLoadManager()
               .clearDataPartitionPolicyTable(deleteDatabaseSchema.getName());
-          LOG.info("data partition policy table cleared.");
+          LOG.info(
+              "[DeleteDatabaseProcedure] The data partition policy table of 
database: {} is cleared.",
+              deleteDatabaseSchema.getName());
 
           // Delete Database metrics
           PartitionMetrics.unbindDatabaseRelatedMetricsWhenUpdate(

Reply via email to