diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index b87b92c8bd..391424959d 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -49,6 +49,7 @@ * Bump up graphql-java to 21.0. * Apply MQE on Virtual-Cache layer UI-templates * Add Echo component ID(5015) language: Golang. +* Fix `index out of bounds exception` in `aggregate_labels` MQE function. #### UI diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/mqe/rt/operation/AggregateLabelsOp.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/mqe/rt/operation/AggregateLabelsOp.java index 759f2ba8ad..617894eb71 100644 --- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/mqe/rt/operation/AggregateLabelsOp.java +++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/mqe/rt/operation/AggregateLabelsOp.java @@ -32,6 +32,7 @@ import org.apache.skywalking.oap.query.graphql.type.mql.ExpressionResult; import org.apache.skywalking.oap.query.graphql.type.mql.MQEValue; import org.apache.skywalking.oap.query.graphql.type.mql.MQEValues; import org.apache.skywalking.oap.query.graphql.type.mql.Metadata; +import org.apache.skywalking.oap.server.library.util.CollectionUtils; public class AggregateLabelsOp { @@ -54,6 +55,9 @@ public class AggregateLabelsOp { private static ExpressionResult aggregateLabeledValueResult(ExpressionResult expResult, AggregateLabelsFuncFactory factory) { List results = expResult.getResults(); + if (CollectionUtils.isEmpty(results)) { + return expResult; + } List combineTo = results.get(0).getValues(); for (int i = 0; i < combineTo.size(); i++) {