You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2018/09/16 02:57:17 UTC
[incubator-skywalking] branch master updated: Analysis and query
implementation of thermodynamic. (#1678)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 2bad786 Analysis and query implementation of thermodynamic. (#1678)
2bad786 is described below
commit 2bad786e798eb9c2fbf26c58aeadc91dc21d4880
Author: 彭勇升 pengys <80...@qq.com>
AuthorDate: Sun Sep 16 10:57:12 2018 +0800
Analysis and query implementation of thermodynamic. (#1678)
* Metric query.
* Analysis and query implementation of thermodynamic.
---
.../apache/skywalking/oap/server/core/Const.java | 2 +
.../generated/all/AllHeatmapIndicator.java | 15 ++---
.../analysis/generated/all/AllP50Indicator.java | 4 +-
.../analysis/generated/all/AllP75Indicator.java | 4 +-
.../analysis/generated/all/AllP90Indicator.java | 4 +-
.../analysis/generated/all/AllP95Indicator.java | 4 +-
.../analysis/generated/all/AllP99Indicator.java | 4 +-
.../core/analysis/indicator/IntKeyLongValue.java | 19 ++++--
.../analysis/indicator/IntKeyLongValueArray.java | 58 ++++++++++++++++++
.../core/analysis/indicator/PxxIndicator.java | 25 ++------
.../analysis/indicator/ThermodynamicIndicator.java | 8 +--
.../server/core/query/MetadataQueryService.java | 70 ++++++++++++++++++++++
.../oap/server/core/query/MetricQueryService.java | 1 +
.../oap/server/core/query/entity}/Attribute.java | 2 +-
.../server/core/query/entity}/ClusterBrief.java | 6 +-
.../oap/server/core/query/entity}/Endpoint.java | 2 +-
.../oap/server/core/query/entity}/Language.java | 2 +-
.../oap/server/core/query/entity}/Service.java | 6 +-
.../server/core/query/entity}/ServiceInstance.java | 9 ++-
.../core/storage/query/IMetadataQueryDAO.java} | 11 ++--
.../server/core/storage/type/StorageDataType.java} | 13 ++--
.../oap/server/library/module/Service.java | 1 -
.../oap/query/graphql/GraphQLQueryProvider.java | 2 +-
.../oap/query/graphql/resolver/MetadataQuery.java | 52 ++++++++++++----
.../elasticsearch/base/ColumnTypeEsMapping.java | 4 +-
.../plugin/elasticsearch/base/IndicatorEsDAO.java | 15 ++++-
.../elasticsearch/query/MetricQueryEsDAO.java | 18 +++++-
27 files changed, 279 insertions(+), 82 deletions(-)
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/Const.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/Const.java
index ca3583a..fbad921 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/Const.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/Const.java
@@ -24,6 +24,8 @@ package org.apache.skywalking.oap.server.core;
public class Const {
public static final int NONE = 0;
public static final String ID_SPLIT = "_";
+ public static final String KEY_VALUE_SPLIT = ",";
+ public static final String ARRAY_SPLIT = "|";
public static final int NONE_SERVICE_ID = 1;
public static final int NONE_INSTANCE_ID = 1;
public static final int NONE_ENDPOINT_ID = 1;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllHeatmapIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllHeatmapIndicator.java
index a1261cb..e0ab631 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllHeatmapIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllHeatmapIndicator.java
@@ -19,15 +19,14 @@
package org.apache.skywalking.oap.server.core.analysis.generated.all;
import java.util.*;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMeta;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
+import org.apache.skywalking.oap.server.core.alarm.*;
import org.apache.skywalking.oap.server.core.analysis.indicator.*;
import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.storage.annotation.*;
-import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.core.storage.annotation.StorageEntity;
/**
* This class is auto generated. Please don't change this class manually.
@@ -39,7 +38,6 @@ import org.apache.skywalking.oap.server.core.source.Scope;
@StorageEntity(name = "all_heatmap", builder = AllHeatmapIndicator.Builder.class)
public class AllHeatmapIndicator extends ThermodynamicIndicator implements AlarmSupported {
-
@Override public String id() {
String splitJointId = String.valueOf(getTimeBucket());
return splitJointId;
@@ -51,7 +49,6 @@ public class AllHeatmapIndicator extends ThermodynamicIndicator implements Alarm
return result;
}
-
@Override public int remoteHashCode() {
int result = 17;
return result;
@@ -78,7 +75,6 @@ public class AllHeatmapIndicator extends ThermodynamicIndicator implements Alarm
remoteBuilder.setDataLongs(0, getTimeBucket());
-
remoteBuilder.setDataIntegers(0, getStep());
remoteBuilder.setDataIntegers(1, getNumOfSteps());
getDetailGroup().forEach(element -> remoteBuilder.addDataIntLongPairList(element.serialize()));
@@ -90,11 +86,10 @@ public class AllHeatmapIndicator extends ThermodynamicIndicator implements Alarm
setTimeBucket(remoteData.getDataLongs(0));
-
setStep(remoteData.getDataIntegers(0));
setNumOfSteps(remoteData.getDataIntegers(1));
- setDetailGroup(new ArrayList<>(30));
+ setDetailGroup(new IntKeyLongValueArray(30));
remoteData.getDataIntLongPairListList().forEach(element -> {
getDetailGroup().add(new IntKeyLongValue(element.getKey(), element.getValue()));
});
@@ -153,7 +148,7 @@ public class AllHeatmapIndicator extends ThermodynamicIndicator implements Alarm
AllHeatmapIndicator indicator = new AllHeatmapIndicator();
indicator.setStep(((Number)dbMap.get("step")).intValue());
indicator.setNumOfSteps(((Number)dbMap.get("num_of_steps")).intValue());
- indicator.setDetailGroup((java.util.List)dbMap.get("detail_group"));
+ indicator.setDetailGroup((IntKeyLongValueArray)dbMap.get("detail_group"));
indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
return indicator;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP50Indicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP50Indicator.java
index 3471b31..1bc9abe 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP50Indicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP50Indicator.java
@@ -94,7 +94,7 @@ public class AllP50Indicator extends P50Indicator implements AlarmSupported {
setValue(remoteData.getDataIntegers(0));
setPrecision(remoteData.getDataIntegers(1));
- setDetailGroup(new ArrayList<>(30));
+ setDetailGroup(new IntKeyLongValueArray(30));
remoteData.getDataIntLongPairListList().forEach(element -> {
getDetailGroup().add(new IntKeyLongValue(element.getKey(), element.getValue()));
});
@@ -153,7 +153,7 @@ public class AllP50Indicator extends P50Indicator implements AlarmSupported {
AllP50Indicator indicator = new AllP50Indicator();
indicator.setValue(((Number)dbMap.get("value")).intValue());
indicator.setPrecision(((Number)dbMap.get("precision")).intValue());
- indicator.setDetailGroup((java.util.List)dbMap.get("detail_group"));
+ indicator.setDetailGroup((IntKeyLongValueArray)dbMap.get("detail_group"));
indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
return indicator;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP75Indicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP75Indicator.java
index 4bf661b..fbcedcb 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP75Indicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP75Indicator.java
@@ -94,7 +94,7 @@ public class AllP75Indicator extends P75Indicator implements AlarmSupported {
setValue(remoteData.getDataIntegers(0));
setPrecision(remoteData.getDataIntegers(1));
- setDetailGroup(new ArrayList<>(30));
+ setDetailGroup(new IntKeyLongValueArray(30));
remoteData.getDataIntLongPairListList().forEach(element -> {
getDetailGroup().add(new IntKeyLongValue(element.getKey(), element.getValue()));
});
@@ -153,7 +153,7 @@ public class AllP75Indicator extends P75Indicator implements AlarmSupported {
AllP75Indicator indicator = new AllP75Indicator();
indicator.setValue(((Number)dbMap.get("value")).intValue());
indicator.setPrecision(((Number)dbMap.get("precision")).intValue());
- indicator.setDetailGroup((java.util.List)dbMap.get("detail_group"));
+ indicator.setDetailGroup((IntKeyLongValueArray)dbMap.get("detail_group"));
indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
return indicator;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP90Indicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP90Indicator.java
index e2771a8..f2031b1 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP90Indicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP90Indicator.java
@@ -94,7 +94,7 @@ public class AllP90Indicator extends P90Indicator implements AlarmSupported {
setValue(remoteData.getDataIntegers(0));
setPrecision(remoteData.getDataIntegers(1));
- setDetailGroup(new ArrayList<>(30));
+ setDetailGroup(new IntKeyLongValueArray(30));
remoteData.getDataIntLongPairListList().forEach(element -> {
getDetailGroup().add(new IntKeyLongValue(element.getKey(), element.getValue()));
});
@@ -153,7 +153,7 @@ public class AllP90Indicator extends P90Indicator implements AlarmSupported {
AllP90Indicator indicator = new AllP90Indicator();
indicator.setValue(((Number)dbMap.get("value")).intValue());
indicator.setPrecision(((Number)dbMap.get("precision")).intValue());
- indicator.setDetailGroup((java.util.List)dbMap.get("detail_group"));
+ indicator.setDetailGroup((IntKeyLongValueArray)dbMap.get("detail_group"));
indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
return indicator;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP95Indicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP95Indicator.java
index cc9c840..64f17a1 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP95Indicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP95Indicator.java
@@ -94,7 +94,7 @@ public class AllP95Indicator extends P95Indicator implements AlarmSupported {
setValue(remoteData.getDataIntegers(0));
setPrecision(remoteData.getDataIntegers(1));
- setDetailGroup(new ArrayList<>(30));
+ setDetailGroup(new IntKeyLongValueArray(30));
remoteData.getDataIntLongPairListList().forEach(element -> {
getDetailGroup().add(new IntKeyLongValue(element.getKey(), element.getValue()));
});
@@ -153,7 +153,7 @@ public class AllP95Indicator extends P95Indicator implements AlarmSupported {
AllP95Indicator indicator = new AllP95Indicator();
indicator.setValue(((Number)dbMap.get("value")).intValue());
indicator.setPrecision(((Number)dbMap.get("precision")).intValue());
- indicator.setDetailGroup((java.util.List)dbMap.get("detail_group"));
+ indicator.setDetailGroup((IntKeyLongValueArray)dbMap.get("detail_group"));
indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
return indicator;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP99Indicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP99Indicator.java
index 031d7cb..01ce273 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP99Indicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/all/AllP99Indicator.java
@@ -94,7 +94,7 @@ public class AllP99Indicator extends P99Indicator implements AlarmSupported {
setValue(remoteData.getDataIntegers(0));
setPrecision(remoteData.getDataIntegers(1));
- setDetailGroup(new ArrayList<>(30));
+ setDetailGroup(new IntKeyLongValueArray(30));
remoteData.getDataIntLongPairListList().forEach(element -> {
getDetailGroup().add(new IntKeyLongValue(element.getKey(), element.getValue()));
});
@@ -153,7 +153,7 @@ public class AllP99Indicator extends P99Indicator implements AlarmSupported {
AllP99Indicator indicator = new AllP99Indicator();
indicator.setValue(((Number)dbMap.get("value")).intValue());
indicator.setPrecision(((Number)dbMap.get("precision")).intValue());
- indicator.setDetailGroup((java.util.List)dbMap.get("detail_group"));
+ indicator.setDetailGroup((IntKeyLongValueArray)dbMap.get("detail_group"));
indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
return indicator;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IntKeyLongValue.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IntKeyLongValue.java
index 0537d60..f3fcdc0 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IntKeyLongValue.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IntKeyLongValue.java
@@ -19,18 +19,19 @@
package org.apache.skywalking.oap.server.core.analysis.indicator;
import java.util.Objects;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.IntKeyLongValuePair;
+import org.apache.skywalking.oap.server.core.storage.type.StorageDataType;
/**
* IntKeyLongValue is a common bean, with key in Int and value in Long
*
- * @author wusheng
+ * @author wusheng, peng-yongsheng
*/
@Setter
@Getter
-public class IntKeyLongValue implements Comparable<IntKeyLongValue> {
+public class IntKeyLongValue implements Comparable<IntKeyLongValue>, StorageDataType {
private int key;
private long value;
@@ -72,4 +73,14 @@ public class IntKeyLongValue implements Comparable<IntKeyLongValue> {
this.key = pair.getKey();
this.value = pair.getValue();
}
+
+ @Override public String toStorageData() {
+ return key + Const.KEY_VALUE_SPLIT + value;
+ }
+
+ @Override public void toObject(String data) {
+ String[] keyValue = data.split(Const.KEY_VALUE_SPLIT);
+ this.key = Integer.valueOf(keyValue[0]);
+ this.value = Long.valueOf(keyValue[1]);
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IntKeyLongValueArray.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IntKeyLongValueArray.java
new file mode 100644
index 0000000..298da62
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IntKeyLongValueArray.java
@@ -0,0 +1,58 @@
+/*
+ * 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.skywalking.oap.server.core.analysis.indicator;
+
+import java.util.ArrayList;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.storage.type.StorageDataType;
+
+/**
+ * @author peng-yongsheng
+ */
+public class IntKeyLongValueArray extends ArrayList<IntKeyLongValue> implements StorageDataType {
+
+ public IntKeyLongValueArray(int initialCapacity) {
+ super(initialCapacity);
+ }
+
+ public IntKeyLongValueArray() {
+ super();
+ }
+
+ @Override public String toStorageData() {
+ StringBuilder data = new StringBuilder();
+ for (int i = 0; i < this.size(); i++) {
+ if (i == 0) {
+ data.append(this.get(i).toStorageData());
+ } else {
+ data.append(Const.ARRAY_SPLIT).append(this.get(i).toStorageData());
+ }
+ }
+ return data.toString();
+ }
+
+ @Override public void toObject(String data) {
+ String[] keyValues = data.split(Const.ARRAY_SPLIT);
+ for (int i = 0; i < keyValues.length; i++) {
+ IntKeyLongValue value = new IntKeyLongValue();
+ value.toObject(keyValues[i]);
+ this.set(i, value);
+ }
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/PxxIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/PxxIndicator.java
index 282b877..d16f9bf 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/PxxIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/PxxIndicator.java
@@ -18,17 +18,9 @@
package org.apache.skywalking.oap.server.core.analysis.indicator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.Arg;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.Entrance;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorOperator;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.SourceFrom;
+import java.util.*;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.*;
import org.apache.skywalking.oap.server.core.storage.annotation.Column;
/**
@@ -38,7 +30,7 @@ import org.apache.skywalking.oap.server.core.storage.annotation.Column;
* observations in a group of observations fall. For example, the 20th percentile is the value (or score) below which
* 20% of the observations may be found.
*
- * @author wusheng
+ * @author wusheng, peng-yongsheng
*/
@IndicatorOperator
public abstract class PxxIndicator extends Indicator implements IntValueHolder {
@@ -48,14 +40,14 @@ public abstract class PxxIndicator extends Indicator implements IntValueHolder {
@Getter @Setter @Column(columnName = VALUE) private int value;
@Getter @Setter @Column(columnName = PRECISION) private int precision;
- @Getter @Setter @Column(columnName = DETAIL_GROUP) private List<IntKeyLongValue> detailGroup;
+ @Getter @Setter @Column(columnName = DETAIL_GROUP) private IntKeyLongValueArray detailGroup;
private final int percentileRank;
private Map<Integer, IntKeyLongValue> detailIndex;
public PxxIndicator(int percentileRank) {
this.percentileRank = percentileRank;
- detailGroup = new ArrayList<>(30);
+ detailGroup = new IntKeyLongValueArray(30);
}
@Entrance
@@ -111,11 +103,6 @@ public abstract class PxxIndicator extends Indicator implements IntValueHolder {
}
}
- @Override
- public int getValue() {
- return value;
- }
-
private void addElement(IntKeyLongValue element) {
detailGroup.add(element);
detailIndex.put(element.getKey(), element);
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/ThermodynamicIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/ThermodynamicIndicator.java
index acc35d3..a69f7ef 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/ThermodynamicIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/ThermodynamicIndicator.java
@@ -31,17 +31,17 @@ import org.apache.skywalking.oap.server.core.storage.annotation.Column;
* A heat map (or heatmap) is a graphical representation of data where the individual values contained in a matrix are
* represented as colors.
*
- * @author wusheng
+ * @author wusheng, peng-yongsheng
*/
@IndicatorOperator
public abstract class ThermodynamicIndicator extends Indicator {
- protected static final String DETAIL_GROUP = "detail_group";
- protected static final String STEP = "step";
+ public static final String DETAIL_GROUP = "detail_group";
+ public static final String STEP = "step";
public static final String NUM_OF_STEPS = "num_of_steps";
@Getter @Setter @Column(columnName = STEP) private int step = 0;
@Getter @Setter @Column(columnName = NUM_OF_STEPS) private int numOfSteps = 0;
- @Getter @Setter @Column(columnName = DETAIL_GROUP) private List<IntKeyLongValue> detailGroup = new ArrayList<>(30);
+ @Getter @Setter @Column(columnName = DETAIL_GROUP) private IntKeyLongValueArray detailGroup = new IntKeyLongValueArray(30);
private Map<Integer, IntKeyLongValue> detailIndex;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
new file mode 100644
index 0000000..7520b0b
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
@@ -0,0 +1,70 @@
+/*
+ * 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.skywalking.oap.server.core.query;
+
+import java.util.*;
+import org.apache.skywalking.oap.server.core.query.entity.*;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+
+/**
+ * @author peng-yongsheng
+ */
+public class MetadataQueryService implements org.apache.skywalking.oap.server.library.module.Service {
+
+ private final ModuleManager moduleManager;
+ private IMetadataQueryDAO metadataQueryDAO;
+
+ public MetadataQueryService(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ }
+
+ public IMetadataQueryDAO getMetadataQueryDAO() {
+ if (metadataQueryDAO == null) {
+ metadataQueryDAO = moduleManager.find(StorageModule.NAME).getService(IMetadataQueryDAO.class);
+ }
+ return metadataQueryDAO;
+ }
+
+ public ClusterBrief getGlobalBrief(final Step step, final long startTB, final long endTB) {
+ return new ClusterBrief();
+ }
+
+ public List<Service> getAllServices(final Step step, final long startTB, final long endTB) {
+ return Collections.emptyList();
+ }
+
+ public List<Service> searchServices(final Step step, final long startTB, final long endTB, final String keyword) {
+ return Collections.emptyList();
+ }
+
+ public List<ServiceInstance> getServiceInstances(final Step step, final long startTB, final long endTB,
+ final String id) {
+ return Collections.emptyList();
+ }
+
+ public List<Endpoint> searchEndpoint(final String keyword, final String serviceId, final int limit) {
+ return Collections.emptyList();
+ }
+
+ public Service searchService(final Step step, final long startTB, final long endTB, final String serviceCode) {
+ return new Service();
+ }
+}
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 4c8a841..1e9c217 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
@@ -29,6 +29,7 @@ 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.IMetricQueryDAO;
import org.apache.skywalking.oap.server.library.module.*;
+import org.apache.skywalking.oap.server.library.module.Service;
import org.slf4j.*;
/**
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Attribute.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Attribute.java
similarity index 93%
rename from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Attribute.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Attribute.java
index 70d2915..aab8fdc 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Attribute.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Attribute.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.query.entity;
public class Attribute {
private String name;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/ClusterBrief.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ClusterBrief.java
similarity index 91%
rename from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/ClusterBrief.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ClusterBrief.java
index b5d20a6..2588590 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/ClusterBrief.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ClusterBrief.java
@@ -16,8 +16,12 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.query.entity;
+import lombok.*;
+
+@Getter
+@Setter
public class ClusterBrief {
private int numOfService;
private int numOfEndpoint;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java
similarity index 93%
copy from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java
index 1b9ae82..d0b4b8e 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.query.entity;
public class Endpoint {
private String id;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Language.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Language.java
similarity index 93%
rename from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Language.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Language.java
index bec5592..bd31a67 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Language.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Language.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.query.entity;
public enum Language {
UNKNOWN,
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Service.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Service.java
similarity index 90%
rename from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Service.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Service.java
index fbc4d7b..a2b1124 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Service.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Service.java
@@ -16,8 +16,12 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.query.entity;
+import lombok.*;
+
+@Getter
+@Setter
public class Service {
private String id;
private String name;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/ServiceInstance.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ServiceInstance.java
similarity index 84%
rename from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/ServiceInstance.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ServiceInstance.java
index 725a1c6..5acedd2 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/ServiceInstance.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ServiceInstance.java
@@ -16,13 +16,16 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.query.entity;
-import java.util.List;
+import java.util.*;
+import lombok.*;
+@Getter
+@Setter
public class ServiceInstance {
private String id;
private String name;
- private List<Attribute> attributes;
+ private List<Attribute> attributes = new ArrayList<>();
private Language language;
}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
similarity index 79%
copy from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
index 1b9ae82..2101c90 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
@@ -16,9 +16,12 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.storage.query;
-public class Endpoint {
- private String id;
- private String name;
+import org.apache.skywalking.oap.server.core.storage.DAO;
+
+/**
+ * @author peng-yongsheng
+ */
+public interface IMetadataQueryDAO extends DAO {
}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/type/StorageDataType.java
similarity index 80%
rename from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/type/StorageDataType.java
index 1b9ae82..4545d9e 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Endpoint.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/type/StorageDataType.java
@@ -16,9 +16,14 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.storage.type;
-public class Endpoint {
- private String id;
- private String name;
+/**
+ * @author peng-yongsheng
+ */
+public interface StorageDataType {
+
+ String toStorageData();
+
+ void toObject(String data);
}
diff --git a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/Service.java b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/Service.java
index 4061202..ef5805a 100644
--- a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/Service.java
+++ b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/Service.java
@@ -16,7 +16,6 @@
*
*/
-
package org.apache.skywalking.oap.server.library.module;
/**
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
index b2e4bfc..a089041 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
@@ -55,7 +55,7 @@ public class GraphQLQueryProvider extends ModuleProvider {
.file("query-protocol/common.graphqls")
.resolvers(new Query(), new Mutation())
.file("query-protocol/metadata.graphqls")
- .resolvers(new MetadataQuery())
+ .resolvers(new MetadataQuery(getManager()))
.file("query-protocol/metric.graphqls")
.resolvers(new MetricQuery(getManager()))
.file("query-protocol/topology.graphqls")
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
index b448113..6f5e2f7 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
@@ -19,37 +19,65 @@
package org.apache.skywalking.oap.query.graphql.resolver;
import com.coxautodev.graphql.tools.GraphQLQueryResolver;
-import java.util.Collections;
import java.util.List;
-import org.apache.skywalking.oap.query.graphql.type.ClusterBrief;
import org.apache.skywalking.oap.query.graphql.type.Duration;
-import org.apache.skywalking.oap.query.graphql.type.Endpoint;
-import org.apache.skywalking.oap.query.graphql.type.Service;
-import org.apache.skywalking.oap.query.graphql.type.ServiceInstance;
+import org.apache.skywalking.oap.server.core.CoreModule;
+import org.apache.skywalking.oap.server.core.query.*;
+import org.apache.skywalking.oap.server.core.query.entity.*;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
public class MetadataQuery implements GraphQLQueryResolver {
+
+ private final ModuleManager moduleManager;
+ private MetadataQueryService metadataQueryService;
+
+ public MetadataQuery(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ }
+
+ private MetadataQueryService getMetadataQueryService() {
+ if (metadataQueryService == null) {
+ this.metadataQueryService = moduleManager.find(CoreModule.NAME).getService(MetadataQueryService.class);
+ }
+ return metadataQueryService;
+ }
+
public ClusterBrief getGlobalBrief(final Duration duration) {
- return new ClusterBrief();
+ long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
+ long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
+
+ return getMetadataQueryService().getGlobalBrief(duration.getStep(), startTimeBucket, endTimeBucket);
}
public List<Service> getAllServices(final Duration duration) {
- return Collections.emptyList();
+ long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
+ long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
+
+ return getMetadataQueryService().getAllServices(duration.getStep(), startTimeBucket, endTimeBucket);
}
public List<Service> searchServices(final Duration duration, final String keyword) {
- return Collections.emptyList();
+ long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
+ long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
+
+ return getMetadataQueryService().searchServices(duration.getStep(), startTimeBucket, endTimeBucket, keyword);
}
public List<ServiceInstance> getServiceInstances(final Duration duration, final String id) {
- return Collections.emptyList();
+ long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
+ long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
+
+ return getMetadataQueryService().getServiceInstances(duration.getStep(), startTimeBucket, endTimeBucket, id);
}
public List<Endpoint> searchEndpoint(final String keyword, final String serviceId, final int limit) {
- return Collections.emptyList();
+ return getMetadataQueryService().searchEndpoint(keyword, serviceId, limit);
}
-
public Service searchService(final Duration duration, final String serviceCode) {
- return new Service();
+ long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
+ long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
+
+ return getMetadataQueryService().searchService(duration.getStep(), startTimeBucket, endTimeBucket, serviceCode);
}
}
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ColumnTypeEsMapping.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ColumnTypeEsMapping.java
index 0647eea..37c3db8 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ColumnTypeEsMapping.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ColumnTypeEsMapping.java
@@ -18,7 +18,7 @@
package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base;
-import java.util.List;
+import org.apache.skywalking.oap.server.core.analysis.indicator.IntKeyLongValueArray;
import org.apache.skywalking.oap.server.core.storage.model.DataTypeMapping;
/**
@@ -35,7 +35,7 @@ public class ColumnTypeEsMapping implements DataTypeMapping {
return "double";
} else if (String.class.equals(type)) {
return "keyword";
- } else if (List.class.equals(type)) {
+ } else if (IntKeyLongValueArray.class.equals(type)) {
return "keyword";
} else {
throw new IllegalArgumentException("Unsupported data type: " + type.getName());
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/IndicatorEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/IndicatorEsDAO.java
index 37b4d47..8bfb6d4 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/IndicatorEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/IndicatorEsDAO.java
@@ -22,6 +22,7 @@ import java.io.IOException;
import java.util.Map;
import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
import org.apache.skywalking.oap.server.core.storage.*;
+import org.apache.skywalking.oap.server.core.storage.type.StorageDataType;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
@@ -54,7 +55,12 @@ public class IndicatorEsDAO extends EsDAO implements IIndicatorDAO<IndexRequest,
XContentBuilder builder = XContentFactory.jsonBuilder().startObject();
for (String key : objectMap.keySet()) {
- builder.field(key, objectMap.get(key));
+ Object value = objectMap.get(key);
+ if (value instanceof StorageDataType) {
+ builder.field(key, ((StorageDataType)value).toStorageData());
+ } else {
+ builder.field(key, value);
+ }
}
builder.endObject();
return getClient().prepareInsert(modelName, indicator.id(), builder);
@@ -65,7 +71,12 @@ public class IndicatorEsDAO extends EsDAO implements IIndicatorDAO<IndexRequest,
XContentBuilder builder = XContentFactory.jsonBuilder().startObject();
for (String key : objectMap.keySet()) {
- builder.field(key, objectMap.get(key));
+ Object value = objectMap.get(key);
+ if (value instanceof StorageDataType) {
+ builder.field(key, ((StorageDataType)value).toStorageData());
+ } else {
+ builder.field(key, value);
+ }
}
builder.endObject();
return getClient().prepareUpdate(modelName, indicator.id(), builder);
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricQueryEsDAO.java
index 60eda38..310f3b7 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricQueryEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetricQueryEsDAO.java
@@ -20,7 +20,7 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query;
import java.io.IOException;
import java.util.*;
-import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
+import org.apache.skywalking.oap.server.core.analysis.indicator.*;
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.storage.TimePyramidTableNameBuilder;
@@ -107,7 +107,23 @@ public class MetricQueryEsDAO extends EsDAO implements IMetricQueryDAO {
Thermodynamic thermodynamic = new Thermodynamic();
for (MultiGetItemResponse itemResponse : response.getResponses()) {
+ int axisYStep = ((Number)itemResponse.getResponse().getSource().get(ThermodynamicIndicator.STEP)).intValue();
+ thermodynamic.setAxisYStep(axisYStep);
+ int numOfSteps = ((Number)itemResponse.getResponse().getSource().get(ThermodynamicIndicator.NUM_OF_STEPS)).intValue();
+
+ String value = (String)itemResponse.getResponse().getSource().get(ThermodynamicIndicator.DETAIL_GROUP);
+ IntKeyLongValueArray intKeyLongValues = new IntKeyLongValueArray();
+ intKeyLongValues.toObject(value);
+
List<Long> axisYValues = new ArrayList<>();
+ for (int i = 0; i < numOfSteps; i++) {
+ axisYValues.add(0L);
+ }
+
+ for (IntKeyLongValue intKeyLongValue : intKeyLongValues) {
+ axisYValues.set(intKeyLongValue.getKey(), intKeyLongValue.getValue());
+ }
+
thermodynamic.getNodes().add(axisYValues);
}
return thermodynamic;