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) {