This is an automated email from the ASF dual-hosted git repository. chaow pushed a commit to branch feature/metric2021 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 776b86989d74996b7e40c599ed970b5d0154cf75 Author: chaow <[email protected]> AuthorDate: Mon Mar 1 12:14:04 2021 +0800 remove used in server module --- metrics/dropwizard-metrics/pom.xml | 4 + .../dropwizard/DropwizardMetricManager.java | 7 +- .../dropwizard/DropwizardMetricReporter.java | 9 +- metrics/interface/pom.xml | 8 +- .../{iotdb-metric.properties => iotdb-metric.yml} | 27 +++--- .../org/apache/iotdb/metrics/MetricManager.java | 2 + .../org/apache/iotdb/metrics/MetricReporter.java | 2 + .../org/apache/iotdb/metrics/MetricService.java | 48 ++++++---- ...{MetricConfig.java => IoTDBReporterConfig.java} | 60 +----------- .../apache/iotdb/metrics/config/MetricConfig.java | 105 ++++++++++----------- .../metrics/config/MetricConfigDescriptor.java | 57 ++--------- .../DoNothingCounter.java} | 22 ++++- .../DoNothingGauge.java} | 17 +++- .../DoNothingHistogram.java} | 28 +++++- .../DoNothingHistogramSnapshot.java} | 49 +++++++++- .../iotdb/metrics/impl/DoNothingMetricManager.java | 34 ++++--- .../DoNothingMetricReporter.java} | 28 +++++- .../DoNothingRate.java} | 42 ++++++++- .../DoNothingTimer.java} | 26 ++++- .../iotdb/metrics/config/MetricConfigTest.java | 57 +++++++++++ .../resources/iotdb-metric.yml} | 28 +++--- .../micrometer/MicrometerMetricManager.java | 9 +- .../micrometer/MicrometerMetricReporter.java | 14 ++- .../engine/storagegroup/StorageGroupProcessor.java | 36 ------- .../apache/iotdb/db/qp/executor/PlanExecutor.java | 21 ----- .../java/org/apache/iotdb/db/service/IoTDB.java | 3 - .../org/apache/iotdb/db/service/TSServiceImpl.java | 24 ----- 27 files changed, 422 insertions(+), 345 deletions(-) diff --git a/metrics/dropwizard-metrics/pom.xml b/metrics/dropwizard-metrics/pom.xml index 5779fae..dc62f6e 100644 --- a/metrics/dropwizard-metrics/pom.xml +++ b/metrics/dropwizard-metrics/pom.xml @@ -23,5 +23,9 @@ <groupId>io.dropwizard.metrics</groupId> <artifactId>metrics-jvm</artifactId> </dependency> + <dependency> + <groupId>io.dropwizard.metrics</groupId> + <artifactId>metrics-core</artifactId> + </dependency> </dependencies> </project> diff --git a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java index 1f34053..2418cce 100644 --- a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java +++ b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java @@ -65,7 +65,7 @@ public class DropwizardMetricManager implements MetricManager { public DropwizardMetricManager() { metricRegistry = new MetricRegistry(); - isEnable = metricConfig.isEnabled(); + isEnable = metricConfig.getEnableMetric(); currentMeters = new ConcurrentHashMap<>(); } @@ -359,4 +359,9 @@ public class DropwizardMetricManager implements MetricManager { public boolean init() { return true; } + + @Override + public String getName() { + return "DropwizardMetricManager"; + } } diff --git a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricReporter.java b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricReporter.java index 235f9ad..7e8fe5f 100644 --- a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricReporter.java +++ b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricReporter.java @@ -40,7 +40,7 @@ public class DropwizardMetricReporter implements MetricReporter { @Override public boolean start() { - List<String> reporters = metricConfig.getReporterList(); + List<String> reporters = metricConfig.getMetricReporterList(); for (String reporter : reporters) { switch (ReporterType.get(reporter)) { case JMX: @@ -74,7 +74,7 @@ public class DropwizardMetricReporter implements MetricReporter { @Override public boolean stop() { - List<String> reporters = metricConfig.getReporterList(); + List<String> reporters = metricConfig.getMetricReporterList(); for (String reporter : reporters) { switch (ReporterType.get(reporter)) { case JMX: @@ -90,4 +90,9 @@ public class DropwizardMetricReporter implements MetricReporter { } return true; } + + @Override + public String getName() { + return "DropwizardMetricReporter"; + } } diff --git a/metrics/interface/pom.xml b/metrics/interface/pom.xml index 9eed490..09e7743 100644 --- a/metrics/interface/pom.xml +++ b/metrics/interface/pom.xml @@ -31,5 +31,11 @@ <name>metric interface</name> <description>Metrics interface for IoTDB</description> <url>https://github.com/thulab/iotdb/tree/master/tsfile</url> - <dependencies/> + <dependencies> + <dependency> + <groupId>org.yaml</groupId> + <artifactId>snakeyaml</artifactId> + <version>1.17</version> + </dependency> + </dependencies> </project> diff --git a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties b/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml similarity index 80% copy from metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties copy to metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml index fc13326..1db3dbf 100644 --- a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties +++ b/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml @@ -18,12 +18,17 @@ # # whether enable the module -enable_metric=true +enableMetric: true # can be multiple reporter, e.g., jmx,prometheus,iotdb -metric_reporter_list=jmx +metricReporterList: + - jmx -push_period_in_second=5 + # the following configure should be matched +metricManagerType: MicrometerMetricManager +metricReporterType: MicrometerMetricReporter + +pushPeriodInSecond: 5 ######################################################## @@ -32,7 +37,8 @@ push_period_in_second=5 # then the following must be set # # # ######################################################## -prometheus_exporter_port=8090 +prometheusReporterConfig: + prometheusExporterPort: 8090 ######################################################## # # @@ -40,10 +46,9 @@ prometheus_exporter_port=8090 # then the following must be set # # # ######################################################## -iotdb_ip=127.0.0.1 -iotdb_port=6667 -iotdb_sg=_sysmetric -iotdb_user=root -iotdb_passwd=root - - +ioTDBReporterConfig: + iotdbIp: 127.0.0.1 + iotdbPort: 6667 + iotdbSg: _sysmetric + iotdbUser: root + iotdbPasswd: root \ No newline at end of file diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricManager.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricManager.java index 8add6ed..7880aeb 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricManager.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricManager.java @@ -100,4 +100,6 @@ public interface MetricManager { * @return */ boolean init(); + + String getName(); } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java index 023f0fe..5e09e16 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java @@ -24,4 +24,6 @@ public interface MetricReporter { void setMetricManager(MetricManager metricManager); boolean stop(); + + String getName(); } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java index c7a03fb..5bb196a 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java @@ -18,13 +18,14 @@ */ package org.apache.iotdb.metrics; +import org.apache.iotdb.metrics.config.MetricConfig; +import org.apache.iotdb.metrics.config.MetricConfigDescriptor; import org.apache.iotdb.metrics.impl.DoNothingMetricManager; +import org.apache.iotdb.metrics.impl.DoNothingMetricReporter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.List; import java.util.ServiceLoader; /** MetricService is the entry to manage all Metric system */ @@ -32,8 +33,6 @@ public class MetricService { private static final Logger logger = LoggerFactory.getLogger(MetricService.class); - private static final List<MetricReporter> reporters = new ArrayList<>(); - static { init(); } @@ -41,6 +40,10 @@ public class MetricService { private static final MetricService INSTANCE = new MetricService(); private static MetricManager metricManager; + private static MetricReporter metricReporter; + + private static final MetricConfig metricConfig = + MetricConfigDescriptor.getInstance().getMetricConfig(); public static MetricService getINSTANCE() { return INSTANCE; @@ -55,15 +58,14 @@ public class MetricService { MetricManager nothingManager = new DoNothingMetricManager(); for (MetricManager mf : metricManagers) { - if (mf instanceof DoNothingMetricManager) { - nothingManager = mf; - continue; - } size++; - metricManager = mf; + if (metricConfig.getMetricManagerType().equals(mf.getName())) { + metricManager = mf; + break; + } } - // if no more implementations, we use nothingFactory. + // if no more implementations, we use nothingManager. if (size == 0) { metricManager = nothingManager; } else if (size > 1) { @@ -74,19 +76,29 @@ public class MetricService { metricManager.init(); ServiceLoader<MetricReporter> reporter = ServiceLoader.load(MetricReporter.class); + size = 0; for (MetricReporter r : reporter) { - reporters.add(r); - r.setMetricManager(metricManager); - r.start(); - logger.info("detect MetricReporter {}", r.getClass().getName()); + size++; + if (metricConfig.getMetricReporterType().equals(r.getName())) { + metricReporter = r; + logger.info("detect MetricReporter {}", r.getClass().getName()); + } } + + // if no more implementations, we use nothingReporter. + if (size == 0) { + metricReporter = new DoNothingMetricReporter(); + } else if (size > 1) { + logger.warn( + "detect more than one MetricReporter, will use {}", metricReporter.getClass().getName()); + } + // do some init work + metricReporter.setMetricManager(metricManager); + metricReporter.start(); } public static void stop() { - for (MetricReporter r : reporters) { - logger.info("detect MetricReporter {}", r.getClass().getName()); - r.stop(); - } + metricReporter.stop(); } public static MetricManager getMetricManager() { diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/IoTDBReporterConfig.java similarity index 51% copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java copy to metrics/interface/src/main/java/org/apache/iotdb/metrics/config/IoTDBReporterConfig.java index fd40973..d2ee80e 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/IoTDBReporterConfig.java @@ -19,70 +19,14 @@ package org.apache.iotdb.metrics.config; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Arrays; -import java.util.List; - -public class MetricConfig { - private static final Logger logger = LoggerFactory.getLogger(MetricConfig.class); - static final String CONFIG_NAME = "iotdb-metric.properties"; - - /** The period of data pushed by the reporter to the remote monitoring system */ - private int pushPeriodInSecond = 5; - - /** enable publishing data */ - private boolean isEnabled = true; - - /** provide or push metric data to remote system, could be jmx, prometheus, iotdb, etc. */ - private List<String> reporterList = - Arrays.asList("jmx", "prometheus"); // Collections.singletonList("jmx"); - - // the following is prometheus related config - /** the http server's port for prometheus exporter to get metric data */ - private String prometheusExporterPort = "8090"; - - // the following is iotdb related config - +/** the following is iotdb related config */ +public class IoTDBReporterConfig { private String iotdbSg = "monitor"; private String iotdbUser = "root"; private String iotdbPasswd = "root"; private String iotdbIp = "127.0.0.1"; private String iotdbPort = "6667"; - public int getPushPeriodInSecond() { - return pushPeriodInSecond; - } - - public void setPushPeriodInSecond(int pushPeriodInSecond) { - this.pushPeriodInSecond = pushPeriodInSecond; - } - - public boolean isEnabled() { - return isEnabled; - } - - public void setEnabled(boolean enabled) { - isEnabled = enabled; - } - - public String getPrometheusExporterPort() { - return prometheusExporterPort; - } - - public void setPrometheusExporterPort(String prometheusExporterPort) { - this.prometheusExporterPort = prometheusExporterPort; - } - - public List<String> getReporterList() { - return reporterList; - } - - public void setReporterList(List<String> reporterList) { - this.reporterList = reporterList; - } - public String getIotdbSg() { return iotdbSg; } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java index fd40973..00b0438 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java @@ -27,99 +27,90 @@ import java.util.List; public class MetricConfig { private static final Logger logger = LoggerFactory.getLogger(MetricConfig.class); - static final String CONFIG_NAME = "iotdb-metric.properties"; - - /** The period of data pushed by the reporter to the remote monitoring system */ - private int pushPeriodInSecond = 5; + static final String CONFIG_NAME = "iotdb-metric.yml"; /** enable publishing data */ - private boolean isEnabled = true; + private Boolean enableMetric = true; - /** provide or push metric data to remote system, could be jmx, prometheus, iotdb, etc. */ - private List<String> reporterList = - Arrays.asList("jmx", "prometheus"); // Collections.singletonList("jmx"); + /** The period of data pushed by the reporter to the remote monitoring system */ + private Integer pushPeriodInSecond = 5; - // the following is prometheus related config - /** the http server's port for prometheus exporter to get metric data */ - private String prometheusExporterPort = "8090"; + private String metricManagerType = "MicrometerMetricManager"; + private String metricReporterType = "MicrometerMetricReporter"; - // the following is iotdb related config + /** provide or push metric data to remote system, could be jmx, prometheus, iotdb, etc. */ + private List<String> metricReporterList = Arrays.asList("jmx"); - private String iotdbSg = "monitor"; - private String iotdbUser = "root"; - private String iotdbPasswd = "root"; - private String iotdbIp = "127.0.0.1"; - private String iotdbPort = "6667"; + private PrometheusReporterConfig prometheusReporterConfig; + private IoTDBReporterConfig ioTDBReporterConfig; - public int getPushPeriodInSecond() { - return pushPeriodInSecond; + public Boolean getEnableMetric() { + return enableMetric; } - public void setPushPeriodInSecond(int pushPeriodInSecond) { - this.pushPeriodInSecond = pushPeriodInSecond; + public void setEnableMetric(Boolean enableMetric) { + this.enableMetric = enableMetric; } - public boolean isEnabled() { - return isEnabled; - } - - public void setEnabled(boolean enabled) { - isEnabled = enabled; + public Integer getPushPeriodInSecond() { + return pushPeriodInSecond; } - public String getPrometheusExporterPort() { - return prometheusExporterPort; + public void setPushPeriodInSecond(Integer pushPeriodInSecond) { + this.pushPeriodInSecond = pushPeriodInSecond; } - public void setPrometheusExporterPort(String prometheusExporterPort) { - this.prometheusExporterPort = prometheusExporterPort; + public String getMetricManagerType() { + return metricManagerType; } - public List<String> getReporterList() { - return reporterList; + public void setMetricManagerType(String metricManagerType) { + this.metricManagerType = metricManagerType; } - public void setReporterList(List<String> reporterList) { - this.reporterList = reporterList; + public String getMetricReporterType() { + return metricReporterType; } - public String getIotdbSg() { - return iotdbSg; + public void setMetricReporterType(String metricReporterType) { + this.metricReporterType = metricReporterType; } - public void setIotdbSg(String iotdbSg) { - this.iotdbSg = iotdbSg; + public List<String> getMetricReporterList() { + return metricReporterList; } - public String getIotdbUser() { - return iotdbUser; + public void setMetricReporterList(List<String> metricReporterList) { + this.metricReporterList = metricReporterList; } - public void setIotdbUser(String iotdbUser) { - this.iotdbUser = iotdbUser; + public PrometheusReporterConfig getPrometheusReporterConfig() { + return prometheusReporterConfig; } - public String getIotdbPasswd() { - return iotdbPasswd; + public void setPrometheusReporterConfig(PrometheusReporterConfig prometheusReporterConfig) { + this.prometheusReporterConfig = prometheusReporterConfig; } - public void setIotdbPasswd(String iotdbPasswd) { - this.iotdbPasswd = iotdbPasswd; + public IoTDBReporterConfig getIoTDBReporterConfig() { + return ioTDBReporterConfig; } - public String getIotdbIp() { - return iotdbIp; + public void setIoTDBReporterConfig(IoTDBReporterConfig ioTDBReporterConfig) { + this.ioTDBReporterConfig = ioTDBReporterConfig; } - public void setIotdbIp(String iotdbIp) { - this.iotdbIp = iotdbIp; - } + /** the following is prometheus related config */ + public static class PrometheusReporterConfig { + /** the http server's port for prometheus exporter to get metric data */ + private String prometheusExporterPort = "8090"; - public String getIotdbPort() { - return iotdbPort; - } + public String getPrometheusExporterPort() { + return prometheusExporterPort; + } - public void setIotdbPort(String iotdbPort) { - this.iotdbPort = iotdbPort; + public void setPrometheusExporterPort(String prometheusExporterPort) { + this.prometheusExporterPort = prometheusExporterPort; + } } } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java index 7990a24..51fdf6e 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java @@ -21,19 +21,17 @@ package org.apache.iotdb.metrics.config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Properties; public class MetricConfigDescriptor { private static final Logger logger = LoggerFactory.getLogger(MetricConfigDescriptor.class); - private final MetricConfig metricConfig = new MetricConfig(); + private MetricConfig metricConfig = new MetricConfig(); public MetricConfig getMetricConfig() { return metricConfig; @@ -71,58 +69,17 @@ public class MetricConfigDescriptor { private void loadProps() { String url = getPropsUrl(); - Properties properties = System.getProperties(); + + Constructor constructor = new Constructor(MetricConfig.class); + Yaml yaml = new Yaml(constructor); if (url != null) { try (InputStream inputStream = new FileInputStream(new File(url))) { logger.info("Start to read config file {}", url); - properties.load(inputStream); + metricConfig = (MetricConfig) yaml.load(inputStream); } catch (IOException e) { logger.warn("Fail to find config file {}", url, e); } } - - metricConfig.setEnabled( - Boolean.parseBoolean( - properties.getProperty("enable_metric", Boolean.toString(metricConfig.isEnabled())))); - - String reporterList = properties.getProperty("metric_reporter_list"); - if (reporterList != null) { - metricConfig.setReporterList(getReporterList(reporterList)); - } - - metricConfig.setPushPeriodInSecond( - Integer.parseInt( - properties.getProperty( - "push_period_in_second", Integer.toString(metricConfig.getPushPeriodInSecond())))); - - metricConfig.setPrometheusExporterPort( - properties.getProperty( - "prometheus_exporter_port", metricConfig.getPrometheusExporterPort())); - - metricConfig.setIotdbIp(properties.getProperty("iotdb_ip", metricConfig.getIotdbIp())); - - metricConfig.setIotdbPort(properties.getProperty("iotdb_port", metricConfig.getIotdbPort())); - - metricConfig.setIotdbSg(properties.getProperty("iotdb_sg", metricConfig.getIotdbSg())); - metricConfig.setIotdbUser(properties.getProperty("iotdb_user", metricConfig.getIotdbUser())); - metricConfig.setIotdbPasswd( - properties.getProperty("iotdb_passwd", metricConfig.getIotdbPasswd())); - } - - private List<String> getReporterList(String reporterList) { - if (reporterList == null) { - return Collections.emptyList(); - } - List<String> reporters = new ArrayList<>(); - String[] split = reporterList.split(","); - for (String reporter : split) { - reporter = reporter.trim(); - if ("".equals(reporter)) { - continue; - } - reporters.add(reporter); - } - return reporters; } private static class MetricConfigDescriptorHolder { diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingCounter.java similarity index 72% copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java copy to metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingCounter.java index 023f0fe..e9047bd 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingCounter.java @@ -16,12 +16,24 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.metrics; -public interface MetricReporter { - boolean start(); +package org.apache.iotdb.metrics.impl; - void setMetricManager(MetricManager metricManager); +import org.apache.iotdb.metrics.type.Counter; - boolean stop(); +public class DoNothingCounter implements Counter { + @Override + public void inc() { + // do nothing + } + + @Override + public void inc(long n) { + // do nothing + } + + @Override + public long count() { + return 0; + } } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingGauge.java similarity index 76% copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java copy to metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingGauge.java index 023f0fe..32f4596 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingGauge.java @@ -16,12 +16,19 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.metrics; -public interface MetricReporter { - boolean start(); +package org.apache.iotdb.metrics.impl; - void setMetricManager(MetricManager metricManager); +import org.apache.iotdb.metrics.type.Gauge; - boolean stop(); +public class DoNothingGauge implements Gauge { + @Override + public long value() { + return 0; + } + + @Override + public void set(long value) { + // do nothing + } } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogram.java similarity index 62% copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java copy to metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogram.java index 023f0fe..793aa3b 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogram.java @@ -16,12 +16,30 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.metrics; -public interface MetricReporter { - boolean start(); +package org.apache.iotdb.metrics.impl; - void setMetricManager(MetricManager metricManager); +import org.apache.iotdb.metrics.type.Histogram; +import org.apache.iotdb.metrics.type.HistogramSnapshot; - boolean stop(); +public class DoNothingHistogram implements Histogram { + @Override + public void update(int value) { + // do nothing + } + + @Override + public void update(long value) { + // do nothing + } + + @Override + public long count() { + return 0; + } + + @Override + public HistogramSnapshot takeSnapshot() { + return new DoNothingHistogramSnapshot(); + } } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogramSnapshot.java similarity index 53% copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java copy to metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogramSnapshot.java index 023f0fe..e72b39f 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogramSnapshot.java @@ -16,12 +16,51 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.metrics; -public interface MetricReporter { - boolean start(); +package org.apache.iotdb.metrics.impl; - void setMetricManager(MetricManager metricManager); +import org.apache.iotdb.metrics.type.HistogramSnapshot; - boolean stop(); +import java.io.OutputStream; + +public class DoNothingHistogramSnapshot implements HistogramSnapshot { + @Override + public double getValue(double quantile) { + return 0; + } + + @Override + public long[] getValues() { + return new long[0]; + } + + @Override + public int size() { + return 0; + } + + @Override + public double getMedian() { + return 0; + } + + @Override + public long getMax() { + return 0; + } + + @Override + public double getMean() { + return 0; + } + + @Override + public long getMin() { + return 0; + } + + @Override + public void dump(OutputStream output) { + // do nothing + } } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricManager.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricManager.java index 6b46b34..42c8bb2 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricManager.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricManager.java @@ -26,35 +26,42 @@ import org.apache.iotdb.metrics.type.Histogram; import org.apache.iotdb.metrics.type.Rate; import org.apache.iotdb.metrics.type.Timer; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; public class DoNothingMetricManager implements MetricManager { + private final DoNothingCounter doNothingCounter = new DoNothingCounter(); + private final DoNothingHistogram doNothingHistogram = new DoNothingHistogram(); + private final DoNothingGauge doNothingGauge = new DoNothingGauge(); + private final DoNothingRate doNothingRate = new DoNothingRate(); + private final DoNothingTimer doNothingTimer = new DoNothingTimer(); + @Override public Counter counter(String metric, String... tags) { - return null; + return doNothingCounter; } @Override public Gauge gauge(String metric, String... tags) { - return null; + return doNothingGauge; } @Override public Histogram histogram(String metric, String... tags) { - return null; + return doNothingHistogram; } @Override public Rate rate(String metric, String... tags) { - return null; + return doNothingRate; } @Override public Timer timer(String metric, String... tags) { - return null; + return doNothingTimer; } @Override @@ -86,32 +93,32 @@ public class DoNothingMetricManager implements MetricManager { @Override public List<String[]> getAllMetricKeys() { - return null; + return Collections.emptyList(); } @Override public Map<String[], Counter> getAllCounters() { - return null; + return Collections.emptyMap(); } @Override public Map<String[], Gauge> getAllGauges() { - return null; + return Collections.emptyMap(); } @Override public Map<String[], Rate> getAllRates() { - return null; + return Collections.emptyMap(); } @Override public Map<String[], Histogram> getAllHistograms() { - return null; + return Collections.emptyMap(); } @Override public Map<String[], Timer> getAllTimers() { - return null; + return Collections.emptyMap(); } @Override @@ -126,4 +133,9 @@ public class DoNothingMetricManager implements MetricManager { public boolean init() { return false; } + + @Override + public String getName() { + return "DoNothingMetricManager"; + } } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricReporter.java similarity index 62% copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java copy to metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricReporter.java index 023f0fe..32b7d81 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricReporter.java @@ -16,12 +16,30 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.metrics; -public interface MetricReporter { - boolean start(); +package org.apache.iotdb.metrics.impl; - void setMetricManager(MetricManager metricManager); +import org.apache.iotdb.metrics.MetricManager; +import org.apache.iotdb.metrics.MetricReporter; - boolean stop(); +public class DoNothingMetricReporter implements MetricReporter { + @Override + public boolean start() { + return true; + } + + @Override + public void setMetricManager(MetricManager metricManager) { + // Do nothing + } + + @Override + public boolean stop() { + return true; + } + + @Override + public String getName() { + return "DoNothingMetricReporter"; + } } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingRate.java similarity index 58% copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java copy to metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingRate.java index 023f0fe..533947b 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingRate.java @@ -16,12 +16,44 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.metrics; -public interface MetricReporter { - boolean start(); +package org.apache.iotdb.metrics.impl; - void setMetricManager(MetricManager metricManager); +import org.apache.iotdb.metrics.type.Rate; - boolean stop(); +public class DoNothingRate implements Rate { + @Override + public long getCount() { + return 0; + } + + @Override + public double getOneMinuteRate() { + return 0; + } + + @Override + public double getMeanRate() { + return 0; + } + + @Override + public double getFiveMinuteRate() { + return 0; + } + + @Override + public double getFifteenMinuteRate() { + return 0; + } + + @Override + public void mark() { + // do nothing + } + + @Override + public void mark(long n) { + // do nothing + } } diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingTimer.java similarity index 59% copy from metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java copy to metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingTimer.java index 023f0fe..a52b474 100644 --- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java +++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingTimer.java @@ -16,12 +16,28 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.metrics; -public interface MetricReporter { - boolean start(); +package org.apache.iotdb.metrics.impl; - void setMetricManager(MetricManager metricManager); +import org.apache.iotdb.metrics.type.HistogramSnapshot; +import org.apache.iotdb.metrics.type.Rate; +import org.apache.iotdb.metrics.type.Timer; - boolean stop(); +import java.util.concurrent.TimeUnit; + +public class DoNothingTimer implements Timer { + @Override + public void update(long duration, TimeUnit unit) { + // do nothing + } + + @Override + public HistogramSnapshot takeSnapshot() { + return new DoNothingHistogramSnapshot(); + } + + @Override + public Rate getImmutableRate() { + return new DoNothingRate(); + } } diff --git a/metrics/interface/src/main/test/org/apache/iotdb/metrics/config/MetricConfigTest.java b/metrics/interface/src/main/test/org/apache/iotdb/metrics/config/MetricConfigTest.java new file mode 100644 index 0000000..88f22c5 --- /dev/null +++ b/metrics/interface/src/main/test/org/apache/iotdb/metrics/config/MetricConfigTest.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.iotdb.metrics.config; + +import org.junit.Assert; +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +public class MetricConfigTest { + + @Test + public void yamlConfigTest() { + String url = this.getClass().getClassLoader().getResource("iotdb-metric.yml").getPath(); + System.out.println(url); + + MetricConfig metricConfig = MetricConfigDescriptor.getInstance().getMetricConfig(); + Constructor constructor = new Constructor(MetricConfig.class); + Yaml yaml = new Yaml(constructor); + if (url != null) { + try (InputStream inputStream = new FileInputStream(new File(url))) { + metricConfig = (MetricConfig) yaml.load(inputStream); + } catch (IOException e) { + Assert.fail(); + } + } + + List<String> lists = metricConfig.getMetricReporterList(); + + Assert.assertEquals(lists.size(), 2); + Assert.assertEquals(metricConfig.getPrometheusReporterConfig().getPrometheusExporterPort(), "80990"); + Assert.assertEquals(metricConfig.getIoTDBReporterConfig().getIotdbIp(), "0.0.0.0"); + } +} diff --git a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties b/metrics/interface/src/main/test/resources/iotdb-metric.yml similarity index 79% rename from metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties rename to metrics/interface/src/main/test/resources/iotdb-metric.yml index fc13326..3dc8c0d 100644 --- a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties +++ b/metrics/interface/src/main/test/resources/iotdb-metric.yml @@ -18,12 +18,18 @@ # # whether enable the module -enable_metric=true +enableMetric: true # can be multiple reporter, e.g., jmx,prometheus,iotdb -metric_reporter_list=jmx +metricReporterList: + - jmx + - prometheus -push_period_in_second=5 + # the following configure should be matched +metricManagerType: MicrometerMetricManager +metricReporterType: MicrometerMetricReporter + +pushPeriodInSecond: 5 ######################################################## @@ -32,7 +38,8 @@ push_period_in_second=5 # then the following must be set # # # ######################################################## -prometheus_exporter_port=8090 +prometheusReporterConfig: + prometheusExporterPort: 80990 ######################################################## # # @@ -40,10 +47,9 @@ prometheus_exporter_port=8090 # then the following must be set # # # ######################################################## -iotdb_ip=127.0.0.1 -iotdb_port=6667 -iotdb_sg=_sysmetric -iotdb_user=root -iotdb_passwd=root - - +ioTDBReporterConfig: + iotdbIp: 0.0.0.0 + iotdbPort: 6667 + iotdbSg: _sysmetric + iotdbUser: root + iotdbPasswd: root \ No newline at end of file diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java index 5888cac..52a2a03 100644 --- a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java +++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java @@ -77,13 +77,13 @@ public class MicrometerMetricManager implements MetricManager { public MicrometerMetricManager() { meterRegistry = Metrics.globalRegistry; currentMeters = new ConcurrentHashMap<>(); - isEnable = metricConfig.isEnabled(); + isEnable = metricConfig.getEnableMetric(); } @Override public boolean init() { logger.info("micrometer init registry"); - List<String> reporters = metricConfig.getReporterList(); + List<String> reporters = metricConfig.getMetricReporterList(); for (String reporter : reporters) { switch (ReporterType.get(reporter)) { case JMX: @@ -447,4 +447,9 @@ public class MicrometerMetricManager implements MetricManager { public boolean isEnable() { return isEnable; } + + @Override + public String getName() { + return "MicrometerMetricManager"; + } } diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java index 95b07f2..f261dc2 100644 --- a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java +++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java @@ -42,11 +42,9 @@ public class MicrometerMetricReporter implements MetricReporter { private final MetricConfig metricConfig = MetricConfigDescriptor.getInstance().getMetricConfig(); private Thread runThread; - private JmxMeterRegistry jmxMeterRegistry; - @Override public boolean start() { - List<String> reporters = metricConfig.getReporterList(); + List<String> reporters = metricConfig.getMetricReporterList(); for (String reporter : reporters) { switch (ReporterType.get(reporter)) { case JMX: @@ -71,7 +69,10 @@ public class MicrometerMetricReporter implements MetricReporter { try { HttpServer server = HttpServer.create( - new InetSocketAddress(Integer.parseInt(metricConfig.getPrometheusExporterPort())), 0); + new InetSocketAddress( + Integer.parseInt( + metricConfig.getPrometheusReporterConfig().getPrometheusExporterPort())), + 0); server.createContext( "/prometheus", httpExchange -> { @@ -110,4 +111,9 @@ public class MicrometerMetricReporter implements MetricReporter { ((MicrometerMetricManager) micrometerMetricManager).getJmxMeterRegistry().stop(); return true; } + + @Override + public String getName() { + return "MicrometerMetricReporter"; + } } diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java index 42b08a7..61b692c 100755 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java @@ -66,7 +66,6 @@ import org.apache.iotdb.db.utils.MmapUtil; import org.apache.iotdb.db.utils.TestOnly; import org.apache.iotdb.db.utils.UpgradeUtils; import org.apache.iotdb.db.writelog.recover.TsFileRecoverPerformer; -import org.apache.iotdb.metrics.type.Timer; import org.apache.iotdb.rpc.RpcUtils; import org.apache.iotdb.rpc.TSStatusCode; import org.apache.iotdb.service.rpc.thrift.TSStatus; @@ -274,10 +273,6 @@ public class StorageGroupProcessor { // DEFAULT_POOL_TRIM_INTERVAL_MILLIS private long timeWhenPoolNotEmpty = Long.MAX_VALUE; - private Timer write_total_timer; - - private Timer read_total_timer; - /** get the direct byte buffer from pool, each fetch contains two ByteBuffer */ public ByteBuffer[] getWalDirectByteBuffer() { ByteBuffer[] res = new ByteBuffer[2]; @@ -389,24 +384,6 @@ public class StorageGroupProcessor { DEFAULT_POOL_TRIM_INTERVAL_MILLIS, TimeUnit.MILLISECONDS); recover(); - read_total_timer = - IoTDB.serverMetricManager.timer( - "read_latency", - "sg", - logicalStorageGroupName, - "user", - "total", - "host", - config.getRpcAddress()); - write_total_timer = - IoTDB.serverMetricManager.timer( - "write_latency", - "sg", - logicalStorageGroupName, - "user", - "total", - "host", - config.getRpcAddress()); } public String getLogicalStorageGroupName() { @@ -806,7 +783,6 @@ public class StorageGroupProcessor { if (!isAlive(insertRowPlan.getTime())) { throw new OutOfTTLException(insertRowPlan.getTime(), (System.currentTimeMillis() - dataTTL)); } - long startTime = System.currentTimeMillis(); if (enableMemControl) { StorageEngine.blockInsertionIfReject(); } @@ -837,18 +813,6 @@ public class StorageGroupProcessor { } finally { writeUnlock(); } - long end = System.currentTimeMillis(); - logger.info("timer insert cost {} millis", end - startTime); - IoTDB.serverMetricManager.timer( - end - startTime, - TimeUnit.MILLISECONDS, - "insert_row_latency", - "sg", - logicalStorageGroupName, - "user", - insertRowPlan.getLoginUserName(), - "host", - config.getRpcAddress()); } /** diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java index 4a0fd88..8f4165e 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java @@ -147,7 +147,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.concurrent.TimeUnit; import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_CANCELLED; import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_CHILD_PATHS; @@ -1135,16 +1134,6 @@ public class PlanExecutor implements IPlanExecutor { if (insertRowPlan.getFailedMeasurements() != null) { checkFailedMeasurments(insertRowPlan); } - IoTDB.serverMetricManager.timer( - System.currentTimeMillis() - startTime, - TimeUnit.MILLISECONDS, - "insert_latency", - "sg", - "root", // TODO infer from insertRowPlan.getDeviceId() - "user", - insertRowPlan.getLoginUserName(), - "host", - config.getRpcAddress()); } catch (StorageEngineException | MetadataException e) { if (IoTDBDescriptor.getInstance().getConfig().isEnableStatMonitor()) { StatMonitor.getInstance().updateFailedStatValue(); @@ -1180,16 +1169,6 @@ public class PlanExecutor implements IPlanExecutor { if (insertTabletPlan.getFailedMeasurements() != null) { checkFailedMeasurments(insertTabletPlan); } - IoTDB.serverMetricManager.timer( - System.currentTimeMillis() - startTime, - TimeUnit.MILLISECONDS, - "insert_tablet_latency", - "sg", - "root", // TODO infer from insertTabletPlan.getDeviceId() - "user", - insertTabletPlan.getLoginUserName(), - "host", - config.getRpcAddress()); } catch (StorageEngineException | MetadataException e) { if (IoTDBDescriptor.getInstance().getConfig().isEnableStatMonitor()) { StatMonitor.getInstance().updateFailedStatValue(); diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java index aed01a3..68badbe 100644 --- a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java +++ b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java @@ -40,7 +40,6 @@ import org.apache.iotdb.db.rescon.SystemInfo; import org.apache.iotdb.db.rescon.TVListAllocator; import org.apache.iotdb.db.sync.receiver.SyncServerManager; import org.apache.iotdb.db.writelog.manager.MultiFileLogNodeManager; -import org.apache.iotdb.metrics.MetricManager; import org.apache.iotdb.metrics.MetricService; import org.slf4j.Logger; @@ -60,8 +59,6 @@ public class IoTDB implements IoTDBMBean { return IoTDBHolder.INSTANCE; } - public static final MetricManager serverMetricManager = MetricService.getMetricManager();; - public static void main(String[] args) { if (args.length > 0) { IoTDBDescriptor.getInstance().replaceProps(args); diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java index 9559bfa..8075fb6 100644 --- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java +++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java @@ -706,18 +706,6 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { plan.getLoginUserName(), config.getRpcAddress()); - IoTDB.serverMetricManager.timer( - System.currentTimeMillis() - startTime, - TimeUnit.MILLISECONDS, - "query_latency", - "sg", - "root", - "query_type", - plan.getOperatorType().name(), - "user", - plan.getLoginUserName(), - "host", - config.getRpcAddress()); return resp; } catch (Exception e) { releaseQueryResourceNoExceptions(queryId); @@ -1192,20 +1180,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { e, "inserting records", TSStatusCode.INTERNAL_SERVER_ERROR)); } } - long startTime = System.currentTimeMillis(); TSStatus tsStatus = executeNonQueryPlan(insertRowsPlan); - IoTDB.serverMetricManager.timer( - System.currentTimeMillis() - startTime, - TimeUnit.MILLISECONDS, - "insert_records_latency", - "sg", - "root", - "user", - sessionIdUsernameMap.get(req.getSessionId()), - "host", - config.getRpcAddress()); - return judgeFinalTsStatus( allSuccess, tsStatus, insertRowsPlan.getResults(), req.deviceIds.size()); }
