You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ta...@apache.org on 2023/02/02 10:58:31 UTC

[iotdb] branch master updated: [IOTDB-5448] Formatting getOrCreatePartitionTables log (#8946)

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 35d289ee33 [IOTDB-5448] Formatting getOrCreatePartitionTables log (#8946)
35d289ee33 is described below

commit 35d289ee33ad81f54056261eda2021aa64a47e58
Author: YongzaoDan <33...@users.noreply.github.com>
AuthorDate: Thu Feb 2 18:58:21 2023 +0800

    [IOTDB-5448] Formatting getOrCreatePartitionTables log (#8946)
---
 .../iotdb/confignode/conf/ConfigNodeConfig.java    |  11 ++
 .../confignode/conf/ConfigNodeDescriptor.java      |   8 ++
 .../iotdb/confignode/manager/ConfigManager.java    | 139 +++++++++++++++++++--
 3 files changed, 147 insertions(+), 11 deletions(-)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
index 9ce488a649..4146fda59a 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
@@ -284,6 +284,9 @@ public class ConfigNodeConfig {
   private long schemaRegionRatisLogMax = 2L * 1024 * 1024 * 1024; // 2G
   private long dataRegionRatisLogMax = 20L * 1024 * 1024 * 1024; // 20G
 
+  /** The getOrCreatePartitionTable interface will log new created Partition if set true */
+  private boolean isEnablePrintingNewlyCreatedPartition = false;
+
   public ConfigNodeConfig() {
     // empty constructor
   }
@@ -1089,4 +1092,12 @@ public class ConfigNodeConfig {
   public void setDataRegionRatisLogMax(long dataRegionRatisLogMax) {
     this.dataRegionRatisLogMax = dataRegionRatisLogMax;
   }
+
+  public boolean isEnablePrintingNewlyCreatedPartition() {
+    return isEnablePrintingNewlyCreatedPartition;
+  }
+
+  public void setEnablePrintingNewlyCreatedPartition(boolean enablePrintingNewlyCreatedPartition) {
+    isEnablePrintingNewlyCreatedPartition = enablePrintingNewlyCreatedPartition;
+  }
 }
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
index 857b5a96c5..178e65afab 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
@@ -756,6 +756,14 @@ public class ConfigNodeDescriptor {
                     "data_region_ratis_log_max_size",
                     String.valueOf(conf.getDataRegionRatisLogMax()))
                 .trim()));
+
+    conf.setEnablePrintingNewlyCreatedPartition(
+        Boolean.parseBoolean(
+            properties
+                .getProperty(
+                    "enable_printing_newly_created_partition",
+                    String.valueOf(conf.isEnablePrintingNewlyCreatedPartition()))
+                .trim()));
   }
 
   private void loadCQConfig(Properties properties) {
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index 36371078e8..d18eed0527 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -650,14 +650,60 @@ public class ConfigManager implements IManager {
         partitionManager.getOrCreateSchemaPartition(getOrCreateSchemaPartitionPlan);
     resp = queryResult.convertToRpcSchemaPartitionTableResp();
 
-    LOGGER.debug(
-        "GetOrCreateSchemaPartition receive devicePaths: {}, return TSchemaPartitionResp: {}",
-        devicePaths,
-        resp);
+    if (CONF.isEnablePrintingNewlyCreatedPartition()) {
+      printNewCreatedSchemaPartition(devicePaths, resp);
+    }
 
     return resp;
   }
 
+  private void printNewCreatedSchemaPartition(
+      List<String> devicePaths, TSchemaPartitionTableResp resp) {
+    final String lineSeparator = System.lineSeparator();
+    StringBuilder devicePathString = new StringBuilder("{");
+    for (String devicePath : devicePaths) {
+      devicePathString.append(lineSeparator).append("\t").append(devicePath).append(",");
+    }
+    devicePathString.append(lineSeparator).append("}");
+
+    StringBuilder schemaPartitionRespString = new StringBuilder("{");
+    schemaPartitionRespString
+        .append(lineSeparator)
+        .append("\tTSStatus=")
+        .append(resp.getStatus().getCode())
+        .append(",");
+    Map<String, Map<TSeriesPartitionSlot, TConsensusGroupId>> schemaPartitionTable =
+        resp.getSchemaPartitionTable();
+    for (Map.Entry<String, Map<TSeriesPartitionSlot, TConsensusGroupId>> databaseEntry :
+        schemaPartitionTable.entrySet()) {
+      String database = databaseEntry.getKey();
+      schemaPartitionRespString
+          .append(lineSeparator)
+          .append("\tDatabase=")
+          .append(database)
+          .append(": {");
+      for (Map.Entry<TSeriesPartitionSlot, TConsensusGroupId> slotEntry :
+          databaseEntry.getValue().entrySet()) {
+        schemaPartitionRespString
+            .append(lineSeparator)
+            .append("\t\t")
+            .append(slotEntry.getKey())
+            .append(", ")
+            .append(slotEntry.getValue())
+            .append(",");
+      }
+      schemaPartitionRespString.append(lineSeparator).append("\t},");
+    }
+    schemaPartitionRespString.append(lineSeparator).append("}");
+
+    LOGGER.info(
+        "[GetOrCreateSchemaPartition]:"
+            + lineSeparator
+            + "Receive PathPatternTree: {}, Return TSchemaPartitionTableResp: {}",
+        devicePathString,
+        schemaPartitionRespString);
+  }
+
   @Override
   public TSchemaNodeManagementResp getNodePathsPartition(PartialPath partialPath, Integer level) {
     TSStatus status = confirmLeader();
@@ -709,7 +755,7 @@ public class ConfigManager implements IManager {
 
   @Override
   public TDataPartitionTableResp getOrCreateDataPartition(
-      GetOrCreateDataPartitionPlan getOrCreateDataPartitionReq) {
+      GetOrCreateDataPartitionPlan getOrCreateDataPartitionPlan) {
     // Construct empty response
     TDataPartitionTableResp resp = new TDataPartitionTableResp();
 
@@ -719,18 +765,89 @@ public class ConfigManager implements IManager {
     }
 
     DataPartitionResp queryResult =
-        partitionManager.getOrCreateDataPartition(getOrCreateDataPartitionReq);
-
+        partitionManager.getOrCreateDataPartition(getOrCreateDataPartitionPlan);
     resp = queryResult.convertToTDataPartitionTableResp();
 
-    LOGGER.debug(
-        "GetOrCreateDataPartition success. receive PartitionSlotsMap: {}, return: {}",
-        getOrCreateDataPartitionReq.getPartitionSlotsMap(),
-        resp);
+    if (CONF.isEnablePrintingNewlyCreatedPartition()) {
+      printNewCreatedDataPartition(getOrCreateDataPartitionPlan, resp);
+    }
 
     return resp;
   }
 
+  private void printNewCreatedDataPartition(
+      GetOrCreateDataPartitionPlan getOrCreateDataPartitionPlan, TDataPartitionTableResp resp) {
+    final String lineSeparator = System.lineSeparator();
+    StringBuilder partitionSlotsMapString = new StringBuilder("{");
+    for (Map.Entry<String, Map<TSeriesPartitionSlot, TTimeSlotList>> databaseEntry :
+        getOrCreateDataPartitionPlan.getPartitionSlotsMap().entrySet()) {
+      String database = databaseEntry.getKey();
+      partitionSlotsMapString
+          .append(lineSeparator)
+          .append("\tDatabase=")
+          .append(database)
+          .append(": {");
+      for (Map.Entry<TSeriesPartitionSlot, TTimeSlotList> slotEntry :
+          databaseEntry.getValue().entrySet()) {
+        partitionSlotsMapString
+            .append(lineSeparator)
+            .append("\t\t")
+            .append(slotEntry.getKey())
+            .append(",")
+            .append(slotEntry.getValue());
+      }
+      partitionSlotsMapString.append(lineSeparator).append("\t},");
+    }
+    partitionSlotsMapString.append(lineSeparator).append("}");
+
+    StringBuilder dataPartitionRespString = new StringBuilder("{");
+    dataPartitionRespString
+        .append(lineSeparator)
+        .append("\tTSStatus=")
+        .append(resp.getStatus().getCode())
+        .append(",");
+    Map<String, Map<TSeriesPartitionSlot, Map<TTimePartitionSlot, List<TConsensusGroupId>>>>
+        dataPartitionTable = resp.getDataPartitionTable();
+    for (Map.Entry<
+            String, Map<TSeriesPartitionSlot, Map<TTimePartitionSlot, List<TConsensusGroupId>>>>
+        databaseEntry : dataPartitionTable.entrySet()) {
+      String database = databaseEntry.getKey();
+      dataPartitionRespString
+          .append(lineSeparator)
+          .append("\tDatabase=")
+          .append(database)
+          .append(": {");
+      for (Map.Entry<TSeriesPartitionSlot, Map<TTimePartitionSlot, List<TConsensusGroupId>>>
+          seriesSlotEntry : databaseEntry.getValue().entrySet()) {
+        dataPartitionRespString
+            .append(lineSeparator)
+            .append("\t\t")
+            .append(seriesSlotEntry.getKey())
+            .append(": {");
+        for (Map.Entry<TTimePartitionSlot, List<TConsensusGroupId>> timeSlotEntry :
+            seriesSlotEntry.getValue().entrySet()) {
+          dataPartitionRespString
+              .append(lineSeparator)
+              .append("\t\t\t")
+              .append(timeSlotEntry.getKey())
+              .append(", ")
+              .append(timeSlotEntry.getValue())
+              .append(",");
+        }
+        dataPartitionRespString.append(lineSeparator).append("\t\t},");
+      }
+      dataPartitionRespString.append(lineSeparator).append("\t}");
+    }
+    dataPartitionRespString.append(lineSeparator).append("}");
+
+    LOGGER.info(
+        "[GetOrCreateDataPartition]:"
+            + lineSeparator
+            + "Receive PartitionSlotsMap: {}, Return TDataPartitionTableResp: {}",
+        partitionSlotsMapString,
+        dataPartitionRespString);
+  }
+
   private TSStatus confirmLeader() {
     // Make sure the consensus layer has been initialized
     if (getConsensusManager() == null) {