From ba24490166f78eb628a16271633aeb1b8eaabe30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Wed, 10 Jul 2019 18:32:45 +0900 Subject: [PATCH] Remove "IDs can't be null" in backend, as UI hasn't fixed this for a long time. (#3039) --- .../server/core/query/MetricQueryService.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetricQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetricQueryService.java index 589c79acf0..a43879355c 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetricQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetricQueryService.java @@ -20,25 +20,32 @@ package org.apache.skywalking.oap.server.core.query; import java.io.IOException; import java.text.ParseException; -import java.util.*; +import java.util.ArrayList; +import java.util.List; import org.apache.skywalking.apm.util.StringUtil; import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Downsampling; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; -import org.apache.skywalking.oap.server.core.query.entity.*; -import org.apache.skywalking.oap.server.core.query.sql.*; +import org.apache.skywalking.oap.server.core.query.entity.IntValues; +import org.apache.skywalking.oap.server.core.query.entity.Thermodynamic; +import org.apache.skywalking.oap.server.core.query.sql.KeyValues; +import org.apache.skywalking.oap.server.core.query.sql.Where; import org.apache.skywalking.oap.server.core.storage.StorageModule; import org.apache.skywalking.oap.server.core.storage.annotation.ValueColumnIds; import org.apache.skywalking.oap.server.core.storage.query.IMetricsQueryDAO; +import org.apache.skywalking.oap.server.library.module.ModuleManager; import org.apache.skywalking.oap.server.library.module.Service; -import org.apache.skywalking.oap.server.library.module.*; import org.apache.skywalking.oap.server.library.util.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class MetricQueryService implements Service { + private static final Logger logger = LoggerFactory.getLogger(MetricQueryService.class); + private final ModuleManager moduleManager; private IMetricsQueryDAO metricQueryDAO; @@ -53,10 +60,17 @@ public class MetricQueryService implements Service { return metricQueryDAO; } - public IntValues getValues(final String indName, final List ids, final Downsampling downsampling, final long startTB, + public IntValues getValues(final String indName, final List ids, final Downsampling downsampling, + final long startTB, final long endTB) throws IOException { if (CollectionUtils.isEmpty(ids)) { - throw new RuntimeException("IDs can't be null"); + /** + * Don't support query values w/o ID. but UI still did this(as bug), + * we return an empty list, and a debug level log, + * rather than an exception, which always being considered as a serious error from new users. + */ + logger.debug("query metrics[{}] w/o IDs", indName); + return new IntValues(); } Where where = new Where(); @@ -68,7 +82,8 @@ public class MetricQueryService implements Service { return getMetricQueryDAO().getValues(indName, downsampling, startTB, endTB, where, ValueColumnIds.INSTANCE.getValueCName(indName), ValueColumnIds.INSTANCE.getValueFunction(indName)); } - public IntValues getLinearIntValues(final String indName, final String id, final Downsampling downsampling, final long startTB, + public IntValues getLinearIntValues(final String indName, final String id, final Downsampling downsampling, + final long startTB, final long endTB) throws IOException, ParseException { List durationPoints = DurationUtils.INSTANCE.getDurationPoints(downsampling, startTB, endTB); List ids = new ArrayList<>(); @@ -81,7 +96,8 @@ public class MetricQueryService implements Service { return getMetricQueryDAO().getLinearIntValues(indName, downsampling, ids, ValueColumnIds.INSTANCE.getValueCName(indName)); } - public Thermodynamic getThermodynamic(final String indName, final String id, final Downsampling downsampling, final long startTB, + public Thermodynamic getThermodynamic(final String indName, final String id, final Downsampling downsampling, + final long startTB, final long endTB) throws IOException, ParseException { List durationPoints = DurationUtils.INSTANCE.getDurationPoints(downsampling, startTB, endTB); List ids = new ArrayList<>(); -- GitLab