This is an automated email from the ASF dual-hosted git repository. tanxinyu pushed a commit to branch rc_1.2.2.2 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 87f5cb703083d20ff541b10a65ed54e0adfc7740 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 d097c7dadec..41830ee0afb 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(); } } @@ -232,6 +234,8 @@ public class ConfigRegionStateMachine configManager.getProcedureManager().shiftExecutor(true); configManager.getRetryFailedTasksThread().startRetryFailedTasksService(); configManager.getPartitionManager().startRegionCleaner(); + // 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 ea151cc6b12..26d795852a3 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 @@ -1417,6 +1417,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 77c47b4cf7c..1536d594283 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 @@ -477,6 +477,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 bd718527c7b..a26fe0030a0 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 @@ -272,7 +272,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 1f7c3417415..b8462e6d48a 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 @@ -27,8 +27,6 @@ import org.apache.iotdb.commons.exception.IllegalPathException; import org.apache.iotdb.commons.exception.MetadataException; import org.apache.iotdb.commons.path.PartialPath; 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; @@ -84,8 +82,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; @@ -124,9 +120,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, @@ -169,29 +162,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()); @@ -260,25 +238,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); @@ -293,21 +257,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 56a20defbab..b5200e59b22 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 @@ -295,8 +295,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."); } @@ -412,6 +410,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;
