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 5f7a0bff761 Fix potential loss of metrics when restart confignode
(#11287)
5f7a0bff761 is described below
commit 5f7a0bff761ca3440d1e98ce44799ac7f6f112d7
Author: ZhangHongYin <[email protected]>
AuthorDate: Thu Oct 12 23:26:06 2023 -0500
Fix potential loss of metrics when restart confignode (#11287)
---
.../statemachine/ConfigRegionStateMachine.java | 4 +
.../iotdb/confignode/manager/ConfigManager.java | 6 +
.../apache/iotdb/confignode/manager/IManager.java | 2 +
.../iotdb/confignode/manager/node/NodeManager.java | 2 +-
.../manager/partition/PartitionMetrics.java | 250 ++++++++++++++-------
.../manager/schema/ClusterSchemaManager.java | 73 +-----
.../procedure/env/DataNodeRemoveHandler.java | 2 +-
.../impl/schema/DeleteDatabaseProcedure.java | 2 +-
.../iotdb/confignode/service/ConfigNode.java | 7 +-
9 files changed, 195 insertions(+), 153 deletions(-)
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/statemachine/ConfigRegionStateMachine.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/statemachine/ConfigRegionStateMachine.java
index c5b35faf516..0a39672cc1d 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/statemachine/ConfigRegionStateMachine.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/statemachine/ConfigRegionStateMachine.java
@@ -215,6 +215,8 @@ public class ConfigRegionStateMachine
configManager.getPartitionManager().stopRegionCleaner();
configManager.getCQManager().stopCQScheduler();
configManager.getClusterSchemaManager().clearSchemaQuotaCache();
+ // Remove Metric after leader change
+ configManager.removeMetrics();
}
}
@@ -233,6 +235,8 @@ public class ConfigRegionStateMachine
configManager.getRetryFailedTasksThread().startRetryFailedTasksService();
configManager.getPartitionManager().startRegionCleaner();
configManager.checkUserPathPrivilege();
+ // Add Metric after leader ready
+ configManager.addMetrics();
// we do cq recovery async for two reasons:
// 1. For performance: cq recovery may be time-consuming, we use another
thread to do it in
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index 70acd3acefd..7f4a5e3546c 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -1495,6 +1495,12 @@ public class ConfigManager implements IManager {
MetricService.getInstance().addMetricSet(new PartitionMetrics(this));
}
+ @Override
+ public void removeMetrics() {
+ MetricService.getInstance().removeMetricSet(new
NodeMetrics(getNodeManager()));
+ MetricService.getInstance().removeMetricSet(new PartitionMetrics(this));
+ }
+
@Override
public TSStatus createSchemaTemplate(TCreateSchemaTemplateReq req) {
TSStatus status = confirmLeader();
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
index 877ddb0255c..409eeba5499 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/IManager.java
@@ -482,6 +482,8 @@ public interface IManager {
void addMetrics();
+ void removeMetrics();
+
/** Show (data/schemaengine) regions. */
DataSet showRegion(GetRegionInfoListPlan getRegionInfoListPlan);
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
index ba0875dc768..14bb88a1edd 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
@@ -281,7 +281,7 @@ public class NodeManager {
}
// Bind DataNode metrics
- PartitionMetrics.bindDataNodePartitionMetrics(
+ PartitionMetrics.bindDataNodePartitionMetricsWhenUpdate(
MetricService.getInstance(), configManager, dataNodeId);
// Adjust the maximum RegionGroup number of each StorageGroup
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionMetrics.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionMetrics.java
index 8a5cd1f5a86..fd51aae15de 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionMetrics.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionMetrics.java
@@ -44,6 +44,8 @@ import java.util.Objects;
public class PartitionMetrics implements IMetricSet {
private static final Logger LOGGER =
LoggerFactory.getLogger(PartitionMetrics.class);
+ private static final String DATA = "data";
+ private static final String SCHEMA = "schema";
private final IManager configManager;
@@ -55,67 +57,37 @@ public class PartitionMetrics implements IMetricSet {
public void bindTo(AbstractMetricService metricService) {
bindRegionPartitionMetrics(metricService);
bindDataNodePartitionMetrics(metricService);
- bindDatabasePartitionMetrics(metricService);
+ bindDatabaseRelatedMetrics(metricService);
}
@Override
public void unbindFrom(AbstractMetricService metricService) {
unbindRegionPartitionMetrics(metricService);
unbindDataNodePartitionMetrics(metricService);
- unbindDatabasePartitionMetrics(metricService);
+ unbindDatabaseRelatedMetrics(metricService);
}
- private void bindRegionPartitionMetrics(AbstractMetricService metricService)
{
- for (RegionStatus status : RegionStatus.values()) {
- // Count the number of SchemaRegions
- metricService.createAutoGauge(
- Metric.REGION_NUM.toString(),
- MetricLevel.CORE,
- getLoadManager(),
- loadManager ->
-
loadManager.countRegionWithSpecifiedStatus(TConsensusGroupType.SchemaRegion,
status),
- Tag.TYPE.toString(),
- TConsensusGroupType.SchemaRegion.toString(),
- Tag.STATUS.toString(),
- status.getStatus());
+ // region DataNode Partition Metrics
- // Count the number of DataRegions
- metricService.createAutoGauge(
- Metric.REGION_NUM.toString(),
- MetricLevel.CORE,
- getLoadManager(),
- loadManager ->
-
loadManager.countRegionWithSpecifiedStatus(TConsensusGroupType.DataRegion,
status),
- Tag.TYPE.toString(),
- TConsensusGroupType.DataRegion.toString(),
- Tag.STATUS.toString(),
- status.getStatus());
+ private void bindDataNodePartitionMetrics(AbstractMetricService
metricService) {
+ List<TDataNodeConfiguration> registerDataNodes =
getNodeManager().getRegisteredDataNodes();
+ for (TDataNodeConfiguration dataNodeConfiguration : registerDataNodes) {
+ int dataNodeId = dataNodeConfiguration.getLocation().getDataNodeId();
+ bindDataNodePartitionMetricsWhenUpdate(metricService, configManager,
dataNodeId);
}
}
- private void unbindRegionPartitionMetrics(AbstractMetricService
metricService) {
- for (RegionStatus status : RegionStatus.values()) {
- // Remove the number of SchemaRegions
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.REGION_NUM.toString(),
- Tag.TYPE.toString(),
- TConsensusGroupType.SchemaRegion.toString(),
- Tag.STATUS.toString(),
- status.getStatus());
-
- // Remove the number of DataRegions
- metricService.remove(
- MetricType.AUTO_GAUGE,
- Metric.REGION_NUM.toString(),
- Tag.TYPE.toString(),
- TConsensusGroupType.DataRegion.toString(),
- Tag.STATUS.toString(),
- status.getStatus());
+ private void unbindDataNodePartitionMetrics(AbstractMetricService
metricService) {
+ List<TDataNodeConfiguration> registerDataNodes =
getNodeManager().getRegisteredDataNodes();
+ for (TDataNodeConfiguration dataNodeConfiguration : registerDataNodes) {
+ String dataNodeName =
+ NodeUrlUtils.convertTEndPointUrl(
+ dataNodeConfiguration.getLocation().getClientRpcEndPoint());
+ unbindDataNodePartitionMetricsWhenUpdate(metricService, dataNodeName);
}
}
- public static void bindDataNodePartitionMetrics(
+ public static void bindDataNodePartitionMetricsWhenUpdate(
AbstractMetricService metricService, IManager configManager, int
dataNodeId) {
NodeManager nodeManager = configManager.getNodeManager();
PartitionManager partitionManager = configManager.getPartitionManager();
@@ -166,15 +138,7 @@ public class PartitionMetrics implements IMetricSet {
TConsensusGroupType.DataRegion.toString());
}
- private void bindDataNodePartitionMetrics(AbstractMetricService
metricService) {
- List<TDataNodeConfiguration> registerDataNodes =
getNodeManager().getRegisteredDataNodes();
- for (TDataNodeConfiguration dataNodeConfiguration : registerDataNodes) {
- int dataNodeId = dataNodeConfiguration.getLocation().getDataNodeId();
- bindDataNodePartitionMetrics(metricService, configManager, dataNodeId);
- }
- }
-
- public static void unbindDataNodePartitionMetrics(
+ public static void unbindDataNodePartitionMetricsWhenUpdate(
AbstractMetricService metricService, String dataNodeName) {
// Remove the number of Regions in the specified DataNode
metricService.remove(
@@ -209,17 +173,112 @@ public class PartitionMetrics implements IMetricSet {
TConsensusGroupType.DataRegion.toString());
}
- private void unbindDataNodePartitionMetrics(AbstractMetricService
metricService) {
- List<TDataNodeConfiguration> registerDataNodes =
getNodeManager().getRegisteredDataNodes();
- for (TDataNodeConfiguration dataNodeConfiguration : registerDataNodes) {
- String dataNodeName =
- NodeUrlUtils.convertTEndPointUrl(
- dataNodeConfiguration.getLocation().getClientRpcEndPoint());
- unbindDataNodePartitionMetrics(metricService, dataNodeName);
+ // endregion
+
+ // region Region Partition Metrics
+
+ private void bindRegionPartitionMetrics(AbstractMetricService metricService)
{
+ for (RegionStatus status : RegionStatus.values()) {
+ // Count the number of SchemaRegions
+ metricService.createAutoGauge(
+ Metric.REGION_NUM.toString(),
+ MetricLevel.CORE,
+ getLoadManager(),
+ loadManager ->
+
loadManager.countRegionWithSpecifiedStatus(TConsensusGroupType.SchemaRegion,
status),
+ Tag.TYPE.toString(),
+ TConsensusGroupType.SchemaRegion.toString(),
+ Tag.STATUS.toString(),
+ status.getStatus());
+
+ // Count the number of DataRegions
+ metricService.createAutoGauge(
+ Metric.REGION_NUM.toString(),
+ MetricLevel.CORE,
+ getLoadManager(),
+ loadManager ->
+
loadManager.countRegionWithSpecifiedStatus(TConsensusGroupType.DataRegion,
status),
+ Tag.TYPE.toString(),
+ TConsensusGroupType.DataRegion.toString(),
+ Tag.STATUS.toString(),
+ status.getStatus());
+ }
+ }
+
+ private void unbindRegionPartitionMetrics(AbstractMetricService
metricService) {
+ for (RegionStatus status : RegionStatus.values()) {
+ // Remove the number of SchemaRegions
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.REGION_NUM.toString(),
+ Tag.TYPE.toString(),
+ TConsensusGroupType.SchemaRegion.toString(),
+ Tag.STATUS.toString(),
+ status.getStatus());
+
+ // Remove the number of DataRegions
+ metricService.remove(
+ MetricType.AUTO_GAUGE,
+ Metric.REGION_NUM.toString(),
+ Tag.TYPE.toString(),
+ TConsensusGroupType.DataRegion.toString(),
+ Tag.STATUS.toString(),
+ status.getStatus());
+ }
+ }
+
+ // endregion
+
+ // region Database Partition Metrics
+
+ private void bindDatabaseRelatedMetrics(AbstractMetricService metricService)
{
+ ClusterSchemaManager clusterSchemaManager = getClusterSchemaManager();
+ // Count the number of Databases
+ metricService.createAutoGauge(
+ Metric.DATABASE_NUM.toString(),
+ MetricLevel.CORE,
+ clusterSchemaManager,
+ c -> c.getDatabaseNames().size());
+
+ List<String> databases = clusterSchemaManager.getDatabaseNames();
+ for (String database : databases) {
+ int dataReplicationFactor = 1;
+ int schemaReplicationFactor = 1;
+ try {
+ dataReplicationFactor =
+ clusterSchemaManager.getReplicationFactor(database,
TConsensusGroupType.DataRegion);
+ schemaReplicationFactor =
+ clusterSchemaManager.getReplicationFactor(database,
TConsensusGroupType.SchemaRegion);
+ } catch (DatabaseNotExistsException e) {
+ // ignore
+ }
+ bindDatabaseRelatedMetricsWhenUpdate(
+ metricService, configManager, database, dataReplicationFactor,
schemaReplicationFactor);
+ }
+ }
+
+ private void unbindDatabaseRelatedMetrics(AbstractMetricService
metricService) {
+ // Remove the number of Databases
+ metricService.remove(MetricType.AUTO_GAUGE,
Metric.DATABASE_NUM.toString());
+
+ List<String> databases = getClusterSchemaManager().getDatabaseNames();
+ for (String database : databases) {
+ unbindDatabaseRelatedMetricsWhenUpdate(metricService, database);
}
}
- public static void bindDatabasePartitionMetrics(
+ public static void bindDatabaseRelatedMetricsWhenUpdate(
+ AbstractMetricService metricService,
+ IManager configManager,
+ String database,
+ int dataReplicationFactor,
+ int schemaReplicationFactor) {
+ bindDatabasePartitionMetricsWhenUpdate(metricService, configManager,
database);
+ bindDatabaseReplicationFactorMetricsWhenUpdate(
+ metricService, database, dataReplicationFactor,
schemaReplicationFactor);
+ }
+
+ private static void bindDatabasePartitionMetricsWhenUpdate(
AbstractMetricService metricService, IManager configManager, String
database) {
PartitionManager partitionManager = configManager.getPartitionManager();
@@ -276,21 +335,7 @@ public class PartitionMetrics implements IMetricSet {
TConsensusGroupType.DataRegion.toString());
}
- private void bindDatabasePartitionMetrics(AbstractMetricService
metricService) {
- // Count the number of Databases
- metricService.createAutoGauge(
- Metric.DATABASE_NUM.toString(),
- MetricLevel.CORE,
- getClusterSchemaManager(),
- clusterSchemaManager ->
clusterSchemaManager.getDatabaseNames().size());
-
- List<String> databases = getClusterSchemaManager().getDatabaseNames();
- for (String database : databases) {
- bindDatabasePartitionMetrics(metricService, configManager, database);
- }
- }
-
- public static void unbindDatabasePartitionMetrics(
+ public static void unbindDatabaseRelatedMetricsWhenUpdate(
AbstractMetricService metricService, String database) {
// Remove the number of SeriesSlots in the specified Database
metricService.remove(
@@ -321,18 +366,51 @@ public class PartitionMetrics implements IMetricSet {
database,
Tag.TYPE.toString(),
TConsensusGroupType.DataRegion.toString());
- }
- private void unbindDatabasePartitionMetrics(AbstractMetricService
metricService) {
- // Remove the number of Databases
- metricService.remove(MetricType.AUTO_GAUGE,
Metric.DATABASE_NUM.toString());
+ // Remove database replication factor metric
+ metricService.remove(
+ MetricType.GAUGE,
+ Metric.REPLICATION_FACTOR.toString(),
+ Tag.TYPE.toString(),
+ DATA,
+ Tag.DATABASE.toString(),
+ database);
+ metricService.remove(
+ MetricType.GAUGE,
+ Metric.REPLICATION_FACTOR.toString(),
+ Tag.TYPE.toString(),
+ SCHEMA,
+ Tag.DATABASE.toString(),
+ database);
+ }
- List<String> databases = getClusterSchemaManager().getDatabaseNames();
- for (String database : databases) {
- unbindDatabasePartitionMetrics(metricService, database);
- }
+ public static void bindDatabaseReplicationFactorMetricsWhenUpdate(
+ AbstractMetricService metricService,
+ String database,
+ int dataReplicationFactor,
+ int schemaReplicationFactor) {
+ metricService
+ .getOrCreateGauge(
+ Metric.REPLICATION_FACTOR.toString(),
+ MetricLevel.CORE,
+ Tag.TYPE.toString(),
+ DATA,
+ Tag.DATABASE.toString(),
+ database)
+ .set(dataReplicationFactor);
+ metricService
+ .getOrCreateGauge(
+ Metric.REPLICATION_FACTOR.toString(),
+ MetricLevel.CORE,
+ Tag.TYPE.toString(),
+ SCHEMA,
+ Tag.DATABASE.toString(),
+ database)
+ .set(schemaReplicationFactor);
}
+ // endregion
+
private NodeManager getNodeManager() {
return configManager.getNodeManager();
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
index 79776b3416e..96a11483f70 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
@@ -29,8 +29,6 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.path.PathPatternTree;
import org.apache.iotdb.commons.schema.SchemaConstant;
import org.apache.iotdb.commons.service.metric.MetricService;
-import org.apache.iotdb.commons.service.metric.enums.Metric;
-import org.apache.iotdb.commons.service.metric.enums.Tag;
import org.apache.iotdb.commons.utils.PathUtils;
import org.apache.iotdb.commons.utils.StatusUtils;
import org.apache.iotdb.confignode.client.DataNodeRequestType;
@@ -85,8 +83,6 @@ import
org.apache.iotdb.db.schemaengine.template.TemplateInternalRPCUpdateType;
import org.apache.iotdb.db.schemaengine.template.TemplateInternalRPCUtil;
import org.apache.iotdb.db.schemaengine.template.alter.TemplateExtendInfo;
import org.apache.iotdb.db.utils.SchemaUtils;
-import org.apache.iotdb.metrics.utils.MetricLevel;
-import org.apache.iotdb.metrics.utils.MetricType;
import org.apache.iotdb.mpp.rpc.thrift.TUpdateTemplateReq;
import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
@@ -125,9 +121,6 @@ public class ClusterSchemaManager {
private static final String CONSENSUS_WRITE_ERROR =
"Failed in the write API executing the consensus layer due to: ";
- private static final MetricService metricService =
MetricService.getInstance();
- private static final String DATA = "data";
- private static final String SCHEMA = "schema";
public ClusterSchemaManager(
IManager configManager,
@@ -170,29 +163,14 @@ public class ClusterSchemaManager {
// Cache DatabaseSchema
result = getConsensusManager().write(databaseSchemaPlan);
// Bind Database metrics
- PartitionMetrics.bindDatabasePartitionMetrics(
- MetricService.getInstance(), configManager,
databaseSchemaPlan.getSchema().getName());
+ PartitionMetrics.bindDatabaseRelatedMetricsWhenUpdate(
+ MetricService.getInstance(),
+ configManager,
+ databaseSchemaPlan.getSchema().getName(),
+ databaseSchemaPlan.getSchema().getDataReplicationFactor(),
+ databaseSchemaPlan.getSchema().getSchemaReplicationFactor());
// Adjust the maximum RegionGroup number of each Database
adjustMaxRegionGroupNum();
- // Add database replication factor metrics
- metricService
- .getOrCreateGauge(
- Metric.REPLICATION_FACTOR.toString(),
- MetricLevel.CORE,
- Tag.TYPE.toString(),
- DATA,
- Tag.DATABASE.toString(),
- databaseSchemaPlan.getSchema().getName())
- .set(databaseSchemaPlan.getSchema().dataReplicationFactor);
- metricService
- .getOrCreateGauge(
- Metric.REPLICATION_FACTOR.toString(),
- MetricLevel.CORE,
- Tag.TYPE.toString(),
- SCHEMA,
- Tag.DATABASE.toString(),
- databaseSchemaPlan.getSchema().getName())
- .set(databaseSchemaPlan.getSchema().schemaReplicationFactor);
} catch (ConsensusException e) {
LOGGER.warn(CONSENSUS_WRITE_ERROR, e);
result = new
TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode());
@@ -261,25 +239,11 @@ public class ClusterSchemaManager {
// Alter DatabaseSchema
try {
result = getConsensusManager().write(databaseSchemaPlan);
- // Alter database replication factor metrics
- metricService
- .getOrCreateGauge(
- Metric.REPLICATION_FACTOR.toString(),
- MetricLevel.CORE,
- Tag.TYPE.toString(),
- DATA,
- Tag.DATABASE.toString(),
- databaseSchemaPlan.getSchema().getName())
- .set(databaseSchemaPlan.getSchema().dataReplicationFactor);
- metricService
- .getOrCreateGauge(
- Metric.REPLICATION_FACTOR.toString(),
- MetricLevel.CORE,
- Tag.TYPE.toString(),
- SCHEMA,
- Tag.DATABASE.toString(),
- databaseSchemaPlan.getSchema().getName())
- .set(databaseSchemaPlan.getSchema().schemaReplicationFactor);
+ PartitionMetrics.bindDatabaseReplicationFactorMetricsWhenUpdate(
+ MetricService.getInstance(),
+ databaseSchemaPlan.getSchema().getName(),
+ databaseSchemaPlan.getSchema().getDataReplicationFactor(),
+ databaseSchemaPlan.getSchema().getSchemaReplicationFactor());
return result;
} catch (ConsensusException e) {
LOGGER.warn(CONSENSUS_WRITE_ERROR, e);
@@ -294,21 +258,6 @@ public class ClusterSchemaManager {
TSStatus result;
try {
result = getConsensusManager().write(deleteDatabasePlan);
- // Remove database replication factor metric
- metricService.remove(
- MetricType.GAUGE,
- Metric.REPLICATION_FACTOR.toString(),
- Tag.TYPE.toString(),
- DATA,
- Tag.DATABASE.toString(),
- deleteDatabasePlan.getName());
- metricService.remove(
- MetricType.GAUGE,
- Metric.REPLICATION_FACTOR.toString(),
- Tag.TYPE.toString(),
- SCHEMA,
- Tag.DATABASE.toString(),
- deleteDatabasePlan.getName());
} catch (ConsensusException e) {
LOGGER.warn(CONSENSUS_WRITE_ERROR, e);
result = new
TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode());
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/DataNodeRemoveHandler.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/DataNodeRemoveHandler.java
index 768ca3be944..d7029d3c5bf 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/DataNodeRemoveHandler.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/DataNodeRemoveHandler.java
@@ -576,7 +576,7 @@ public class DataNodeRemoveHandler {
configManager.getClusterSchemaManager().adjustMaxRegionGroupNum();
// Remove metrics
- PartitionMetrics.unbindDataNodePartitionMetrics(
+ PartitionMetrics.unbindDataNodePartitionMetricsWhenUpdate(
MetricService.getInstance(),
NodeUrlUtils.convertTEndPointUrl(dataNodeLocation.getClientRpcEndPoint()));
}
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 7fd0a1af2bb..c406103d850 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
@@ -154,7 +154,7 @@ public class DeleteDatabaseProcedure
env.deleteDatabaseConfig(deleteDatabaseSchema.getName());
// Delete Database metrics
- PartitionMetrics.unbindDatabasePartitionMetrics(
+ PartitionMetrics.unbindDatabaseRelatedMetricsWhenUpdate(
MetricService.getInstance(), deleteDatabaseSchema.getName());
// try sync delete schemaengine region
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
index 2e9c4c056de..1f0c1ee32ec 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/service/ConfigNode.java
@@ -298,8 +298,6 @@ public class ConfigNode implements ConfigNodeMBean {
LOGGER.error("Can't start ConfigNode consensus group!", e);
stop();
}
- // Add some Metrics for configManager
- configManager.addMetrics();
LOGGER.info("Successfully initialize ConfigManager.");
}
@@ -417,6 +415,11 @@ public class ConfigNode implements ConfigNodeMBean {
return configManager;
}
+ public void addMetrics() {
+ // Add some Metrics for configManager
+ configManager.addMetrics();
+ }
+
@TestOnly
public void setConfigManager(ConfigManager configManager) {
this.configManager = configManager;