This is an automated email from the ASF dual-hosted git repository.

wankai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 8b6cd1c241 Add more attrs for Service metrics (#12728)
8b6cd1c241 is described below

commit 8b6cd1c241bee88deb0eacbca0be596434389656
Author: Wan Kai <[email protected]>
AuthorDate: Tue Oct 29 15:07:53 2024 +0800

    Add more attrs for Service metrics (#12728)
---
 docs/en/api/metrics-query-expression.md                          | 4 ++--
 docs/en/concepts-and-designs/metrics-additional-attributes.md    | 2 +-
 .../main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQELexer.g4 | 1 +
 .../antlr4/org/apache/skywalking/mqe/rt/grammar/MQEParser.g4     | 2 +-
 .../org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java    | 2 +-
 .../apache/skywalking/oap/server/core/analysis/meter/Meter.java  | 7 +++++++
 .../skywalking/oap/server/core/analysis/meter/MeterEntity.java   | 2 ++
 .../oap/server/core/analysis/meter/function/avg/AvgFunction.java | 9 +++++++++
 .../core/analysis/meter/function/latest/LatestFunction.java      | 9 +++++++++
 .../oap/server/core/analysis/meter/function/max/MaxFunction.java | 9 +++++++++
 .../oap/server/core/analysis/meter/function/min/MinFunction.java | 9 +++++++++
 .../oap/server/core/analysis/meter/function/sum/SumFunction.java | 9 +++++++++
 .../analysis/meter/function/sumpermin/SumPerMinFunction.java     | 9 +++++++++
 .../org/apache/skywalking/oap/server/core/source/K8SService.java | 4 ++++
 .../org/apache/skywalking/oap/server/core/source/Service.java    | 4 ++++
 .../apache/skywalking/oap/query/graphql/mqe/rt/MQEVisitor.java   | 2 +-
 16 files changed, 78 insertions(+), 6 deletions(-)

diff --git a/docs/en/api/metrics-query-expression.md 
b/docs/en/api/metrics-query-expression.md
index 8e7833b931..0a734c7aa1 100644
--- a/docs/en/api/metrics-query-expression.md
+++ b/docs/en/api/metrics-query-expression.md
@@ -235,8 +235,8 @@ top_n(<metric_name>, <top_number>, <order>, <attrs>)
 - `top_number` is the number of the top results, should be a positive integer.
 - `order` is the order of the top results. The value of `order` can be `asc` 
or `des`. 
 - `attrs` optional, attrs is the attributes of the metrics, could be used to 
filter the topN results. 
-   SkyWalking supports 5 attrs: `attr0`, `attr1`, `attr2`, `attr3`, `attr4`. 
-   The format is `attr0='value', attr1='value'...attr4='value4'`, could use 
one or multiple attrs to filter the topN results.
+   SkyWalking supports 6 attrs: `attr0`, `attr1`, `attr2`, `attr3`, `attr4`, 
`attr5`. 
+   The format is `attr0='value', attr1='value'...attr5='value5'`, could use 
one or multiple attrs to filter the topN results.
   **Notice**: The `attrs` only support Service metrics for now and should be 
added in the metrics first, see [Metrics Additional 
Attributes](../concepts-and-designs/metrics-additional-attributes.md).
 
 For example:
diff --git a/docs/en/concepts-and-designs/metrics-additional-attributes.md 
b/docs/en/concepts-and-designs/metrics-additional-attributes.md
index 2a5ad7e459..50de232684 100644
--- a/docs/en/concepts-and-designs/metrics-additional-attributes.md
+++ b/docs/en/concepts-and-designs/metrics-additional-attributes.md
@@ -6,7 +6,7 @@ A typical case is the `topN` query, when we query the top N 
services by the metr
 If we want to filter the services by `Layer` or `Group` or other specific 
conditions, it is impossible to do this with the current metrics fields.
 
 Since 10.2.0, SkyWalking supports the metrics attributes through source 
decorate. 
-SkyWalking provides additional attributes(`attr0...attr4`) fields to the 
metrics and source. 
+SkyWalking provides additional attributes(`attr0...attr5`) fields to the 
metrics and source. 
 By default, these fields are empty, we can fill them by set a specific 
decorate logic for source. 
 According to the difference between the `OAL` and `MAL`, the usage of decorate 
is different.
 
diff --git 
a/oap-server/mqe-grammar/src/main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQELexer.g4
 
b/oap-server/mqe-grammar/src/main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQELexer.g4
index 3fc984fd03..0ea98355b1 100644
--- 
a/oap-server/mqe-grammar/src/main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQELexer.g4
+++ 
b/oap-server/mqe-grammar/src/main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQELexer.g4
@@ -91,6 +91,7 @@ ATTR1: 'attr1';
 ATTR2: 'attr2';
 ATTR3: 'attr3';
 ATTR4: 'attr4';
+ATTR5: 'attr5';
 
 // Literals
 INTEGER: Digit+;
diff --git 
a/oap-server/mqe-grammar/src/main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQEParser.g4
 
b/oap-server/mqe-grammar/src/main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQEParser.g4
index 1d421e9d7d..92440b3097 100644
--- 
a/oap-server/mqe-grammar/src/main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQEParser.g4
+++ 
b/oap-server/mqe-grammar/src/main/antlr4/org/apache/skywalking/mqe/rt/grammar/MQEParser.g4
@@ -101,6 +101,6 @@ sort_label_values:
     SORT_LABEL_VALUES;
 
 attributeName:
-    ATTR0 | ATTR1 | ATTR2 | ATTR3 | ATTR4;
+    ATTR0 | ATTR1 | ATTR2 | ATTR3 | ATTR4 | ATTR5;
 attribute: attributeName EQ VALUE_STRING;
 attributeList: attribute (COMMA attribute)*;
diff --git 
a/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
index d4b7b1d4a9..30408c40ef 100644
--- 
a/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
+++ 
b/oap-server/oal-rt/src/test/java/org/apache/skywalking/oal/rt/parser/DeepAnalysisTest.java
@@ -66,7 +66,7 @@ public class DeepAnalysisTest {
         Assertions.assertEquals("(long)(1)", 
method.getArgsExpressions().get(1));
 
         List<SourceColumn> source = result.getFieldsFromSource();
-        Assertions.assertEquals(6, source.size());
+        Assertions.assertEquals(7, source.size());
 
         List<DataColumn> persistentFields = result.getPersistentFields();
         Assertions.assertEquals(4, persistentFields.size());
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/Meter.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/Meter.java
index 8ba6878204..f503abae4c 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/Meter.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/Meter.java
@@ -38,6 +38,7 @@ public abstract class Meter extends Metrics implements 
WithMetadata {
     protected static final String ATTR2 = "attr2";
     protected static final String ATTR3 = "attr3";
     protected static final String ATTR4 = "attr4";
+    protected static final String ATTR5 = "attr5";
 
     private MetricsMetaInfo metadata = new MetricsMetaInfo("UNKNOWN", 
DefaultScopeDefine.UNKNOWN);
 
@@ -66,6 +67,11 @@ public abstract class Meter extends Metrics implements 
WithMetadata {
     @Column(name = ATTR4)
     private String attr4;
 
+    @Setter
+    @Getter
+    @Column(name = ATTR5)
+    private String attr5;
+
     /**
      * @return entity ID to represent this metric object. Typically, meter 
function should have a String type field, named entityId.
      * See {@link 
org.apache.skywalking.oap.server.core.analysis.meter.function.avg.AvgFunction#getEntityId()}
 as an example.
@@ -101,5 +107,6 @@ public abstract class Meter extends Metrics implements 
WithMetadata {
         attr2 = entity.getAttr2();
         attr3 = entity.getAttr3();
         attr4 = entity.getAttr4();
+        attr5 = entity.getAttr5();
     }
 }
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterEntity.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterEntity.java
index 073981d36a..1489ff3a5a 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterEntity.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterEntity.java
@@ -61,6 +61,8 @@ public class MeterEntity {
     private String attr3;
     @Setter
     private String attr4;
+    @Setter
+    private String attr5;
 
     private MeterEntity() {
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java
index 3f96cf79e5..4228c8e63f 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java
@@ -110,6 +110,7 @@ public abstract class AvgFunction extends Meter implements 
AcceptableValue<Long>
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -127,6 +128,7 @@ public abstract class AvgFunction extends Meter implements 
AcceptableValue<Long>
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -163,6 +165,10 @@ public abstract class AvgFunction extends Meter implements 
AcceptableValue<Long>
         if (StringUtil.isNotEmpty(remoteData.getDataStrings(6))) {
             setAttr4(remoteData.getDataStrings(6));
         }
+
+        if (StringUtil.isNotEmpty(remoteData.getDataStrings(7))) {
+            setAttr5(remoteData.getDataStrings(7));
+        }
     }
 
     @Override
@@ -180,6 +186,7 @@ public abstract class AvgFunction extends Meter implements 
AcceptableValue<Long>
         remoteBuilder.addDataStrings(getAttr2() == null ? Const.EMPTY_STRING : 
getAttr2());
         remoteBuilder.addDataStrings(getAttr3() == null ? Const.EMPTY_STRING : 
getAttr3());
         remoteBuilder.addDataStrings(getAttr4() == null ? Const.EMPTY_STRING : 
getAttr4());
+        remoteBuilder.addDataStrings(getAttr5() == null ? Const.EMPTY_STRING : 
getAttr5());
         return remoteBuilder;
     }
 
@@ -225,6 +232,7 @@ public abstract class AvgFunction extends Meter implements 
AcceptableValue<Long>
             metrics.setAttr2((String) converter.get(ATTR2));
             metrics.setAttr3((String) converter.get(ATTR3));
             metrics.setAttr4((String) converter.get(ATTR4));
+            metrics.setAttr5((String) converter.get(ATTR5));
             return metrics;
         }
 
@@ -242,6 +250,7 @@ public abstract class AvgFunction extends Meter implements 
AcceptableValue<Long>
             converter.accept(ATTR2, storageData.getAttr2());
             converter.accept(ATTR3, storageData.getAttr3());
             converter.accept(ATTR4, storageData.getAttr4());
+            converter.accept(ATTR5, storageData.getAttr5());
         }
     }
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java
index 7bf887378b..b741220e89 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java
@@ -98,6 +98,7 @@ public abstract class LatestFunction extends Meter implements 
AcceptableValue<Lo
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -114,6 +115,7 @@ public abstract class LatestFunction extends Meter 
implements AcceptableValue<Lo
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -149,6 +151,10 @@ public abstract class LatestFunction extends Meter 
implements AcceptableValue<Lo
         if (StringUtil.isNotEmpty(remoteData.getDataStrings(6))) {
             setAttr4(remoteData.getDataStrings(6));
         }
+
+        if (StringUtil.isNotEmpty(remoteData.getDataStrings(7))) {
+            setAttr5(remoteData.getDataStrings(7));
+        }
     }
 
     @Override
@@ -165,6 +171,7 @@ public abstract class LatestFunction extends Meter 
implements AcceptableValue<Lo
         remoteBuilder.addDataStrings(getAttr2() == null ? Const.EMPTY_STRING : 
getAttr2());
         remoteBuilder.addDataStrings(getAttr3() == null ? Const.EMPTY_STRING : 
getAttr3());
         remoteBuilder.addDataStrings(getAttr4() == null ? Const.EMPTY_STRING : 
getAttr4());
+        remoteBuilder.addDataStrings(getAttr5() == null ? Const.EMPTY_STRING : 
getAttr5());
         return remoteBuilder;
     }
 
@@ -199,6 +206,7 @@ public abstract class LatestFunction extends Meter 
implements AcceptableValue<Lo
             metrics.setAttr2((String) converter.get(ATTR2));
             metrics.setAttr3((String) converter.get(ATTR3));
             metrics.setAttr4((String) converter.get(ATTR4));
+            metrics.setAttr5((String) converter.get(ATTR5));
             return metrics;
         }
 
@@ -214,6 +222,7 @@ public abstract class LatestFunction extends Meter 
implements AcceptableValue<Lo
             converter.accept(ATTR2, storageData.getAttr2());
             converter.accept(ATTR3, storageData.getAttr3());
             converter.accept(ATTR4, storageData.getAttr4());
+            converter.accept(ATTR5, storageData.getAttr5());
         }
     }
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/max/MaxFunction.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/max/MaxFunction.java
index ff04af66ef..c30b5d5065 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/max/MaxFunction.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/max/MaxFunction.java
@@ -104,6 +104,7 @@ public abstract class MaxFunction extends Meter implements 
AcceptableValue<Long>
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -120,6 +121,7 @@ public abstract class MaxFunction extends Meter implements 
AcceptableValue<Long>
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -154,6 +156,10 @@ public abstract class MaxFunction extends Meter implements 
AcceptableValue<Long>
         if (StringUtil.isNotEmpty(remoteData.getDataStrings(6))) {
             setAttr4(remoteData.getDataStrings(6));
         }
+
+        if (StringUtil.isNotEmpty(remoteData.getDataStrings(7))) {
+            setAttr5(remoteData.getDataStrings(7));
+        }
     }
 
     @Override
@@ -169,6 +175,7 @@ public abstract class MaxFunction extends Meter implements 
AcceptableValue<Long>
         remoteBuilder.addDataStrings(getAttr2() == null ? Const.EMPTY_STRING : 
getAttr2());
         remoteBuilder.addDataStrings(getAttr3() == null ? Const.EMPTY_STRING : 
getAttr3());
         remoteBuilder.addDataStrings(getAttr4() == null ? Const.EMPTY_STRING : 
getAttr4());
+        remoteBuilder.addDataStrings(getAttr5() == null ? Const.EMPTY_STRING : 
getAttr5());
         return remoteBuilder;
     }
 
@@ -204,6 +211,7 @@ public abstract class MaxFunction extends Meter implements 
AcceptableValue<Long>
             metrics.setAttr2((String) converter.get(ATTR2));
             metrics.setAttr3((String) converter.get(ATTR3));
             metrics.setAttr4((String) converter.get(ATTR4));
+            metrics.setAttr5((String) converter.get(ATTR5));
             return metrics;
         }
 
@@ -219,6 +227,7 @@ public abstract class MaxFunction extends Meter implements 
AcceptableValue<Long>
             converter.accept(ATTR2, storageData.getAttr2());
             converter.accept(ATTR3, storageData.getAttr3());
             converter.accept(ATTR4, storageData.getAttr4());
+            converter.accept(ATTR5, storageData.getAttr5());
         }
     }
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/min/MinFunction.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/min/MinFunction.java
index edbae2b9d2..b4379dfddb 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/min/MinFunction.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/min/MinFunction.java
@@ -105,6 +105,7 @@ public abstract class MinFunction extends Meter implements 
AcceptableValue<Long>
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -121,6 +122,7 @@ public abstract class MinFunction extends Meter implements 
AcceptableValue<Long>
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -155,6 +157,10 @@ public abstract class MinFunction extends Meter implements 
AcceptableValue<Long>
         if (StringUtil.isNotEmpty(remoteData.getDataStrings(6))) {
             setAttr4(remoteData.getDataStrings(6));
         }
+
+        if (StringUtil.isNotEmpty(remoteData.getDataStrings(7))) {
+            setAttr5(remoteData.getDataStrings(7));
+        }
     }
 
     @Override
@@ -170,6 +176,7 @@ public abstract class MinFunction extends Meter implements 
AcceptableValue<Long>
         remoteBuilder.addDataStrings(getAttr2() == null ? Const.EMPTY_STRING : 
getAttr2());
         remoteBuilder.addDataStrings(getAttr3() == null ? Const.EMPTY_STRING : 
getAttr3());
         remoteBuilder.addDataStrings(getAttr4() == null ? Const.EMPTY_STRING : 
getAttr4());
+        remoteBuilder.addDataStrings(getAttr5() == null ? Const.EMPTY_STRING : 
getAttr5());
         return remoteBuilder;
     }
 
@@ -205,6 +212,7 @@ public abstract class MinFunction extends Meter implements 
AcceptableValue<Long>
             metrics.setAttr2((String) converter.get(ATTR2));
             metrics.setAttr3((String) converter.get(ATTR3));
             metrics.setAttr4((String) converter.get(ATTR4));
+            metrics.setAttr5((String) converter.get(ATTR5));
             return metrics;
         }
 
@@ -220,6 +228,7 @@ public abstract class MinFunction extends Meter implements 
AcceptableValue<Long>
             converter.accept(ATTR2, storageData.getAttr2());
             converter.accept(ATTR3, storageData.getAttr3());
             converter.accept(ATTR4, storageData.getAttr4());
+            converter.accept(ATTR5, storageData.getAttr5());
         }
     }
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java
index e3004af6f4..ff67146d93 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java
@@ -86,6 +86,7 @@ public abstract class SumFunction extends Meter implements 
AcceptableValue<Long>
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -102,6 +103,7 @@ public abstract class SumFunction extends Meter implements 
AcceptableValue<Long>
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -137,6 +139,10 @@ public abstract class SumFunction extends Meter implements 
AcceptableValue<Long>
         if (StringUtil.isNotEmpty(remoteData.getDataStrings(6))) {
             setAttr4(remoteData.getDataStrings(6));
         }
+
+        if (StringUtil.isNotEmpty(remoteData.getDataStrings(7))) {
+            setAttr5(remoteData.getDataStrings(7));
+        }
     }
 
     @Override
@@ -154,6 +160,7 @@ public abstract class SumFunction extends Meter implements 
AcceptableValue<Long>
         remoteBuilder.addDataStrings(getAttr2() == null ? Const.EMPTY_STRING : 
getAttr2());
         remoteBuilder.addDataStrings(getAttr3() == null ? Const.EMPTY_STRING : 
getAttr3());
         remoteBuilder.addDataStrings(getAttr4() == null ? Const.EMPTY_STRING : 
getAttr4());
+        remoteBuilder.addDataStrings(getAttr5() == null ? Const.EMPTY_STRING : 
getAttr5());
         return remoteBuilder;
     }
 
@@ -196,6 +203,7 @@ public abstract class SumFunction extends Meter implements 
AcceptableValue<Long>
             metrics.setAttr2((String) converter.get(ATTR2));
             metrics.setAttr3((String) converter.get(ATTR3));
             metrics.setAttr4((String) converter.get(ATTR4));
+            metrics.setAttr5((String) converter.get(ATTR5));
             return metrics;
         }
 
@@ -211,6 +219,7 @@ public abstract class SumFunction extends Meter implements 
AcceptableValue<Long>
             converter.accept(ATTR2, storageData.getAttr2());
             converter.accept(ATTR3, storageData.getAttr3());
             converter.accept(ATTR4, storageData.getAttr4());
+            converter.accept(ATTR5, storageData.getAttr5());
         }
     }
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinFunction.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinFunction.java
index 8a7e278187..ddd5b56af2 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinFunction.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinFunction.java
@@ -94,6 +94,7 @@ public abstract class SumPerMinFunction extends Meter 
implements AcceptableValue
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -110,6 +111,7 @@ public abstract class SumPerMinFunction extends Meter 
implements AcceptableValue
         metrics.setAttr2(getAttr2());
         metrics.setAttr3(getAttr3());
         metrics.setAttr4(getAttr4());
+        metrics.setAttr5(getAttr5());
         return metrics;
     }
 
@@ -145,6 +147,10 @@ public abstract class SumPerMinFunction extends Meter 
implements AcceptableValue
         if (StringUtil.isNotEmpty(remoteData.getDataStrings(6))) {
             setAttr4(remoteData.getDataStrings(6));
         }
+
+        if (StringUtil.isNotEmpty(remoteData.getDataStrings(7))) {
+            setAttr5(remoteData.getDataStrings(7));
+        }
     }
 
     @Override
@@ -162,6 +168,7 @@ public abstract class SumPerMinFunction extends Meter 
implements AcceptableValue
         remoteBuilder.addDataStrings(getAttr2() == null ? Const.EMPTY_STRING : 
getAttr2());
         remoteBuilder.addDataStrings(getAttr3() == null ? Const.EMPTY_STRING : 
getAttr3());
         remoteBuilder.addDataStrings(getAttr4() == null ? Const.EMPTY_STRING : 
getAttr4());
+        remoteBuilder.addDataStrings(getAttr5() == null ? Const.EMPTY_STRING : 
getAttr5());
         return remoteBuilder;
     }
 
@@ -205,6 +212,7 @@ public abstract class SumPerMinFunction extends Meter 
implements AcceptableValue
             metrics.setAttr2((String) converter.get(ATTR2));
             metrics.setAttr3((String) converter.get(ATTR3));
             metrics.setAttr4((String) converter.get(ATTR4));
+            metrics.setAttr5((String) converter.get(ATTR5));
             return metrics;
         }
 
@@ -221,6 +229,7 @@ public abstract class SumPerMinFunction extends Meter 
implements AcceptableValue
             converter.accept(ATTR2, storageData.getAttr2());
             converter.accept(ATTR3, storageData.getAttr3());
             converter.accept(ATTR4, storageData.getAttr4());
+            converter.accept(ATTR5, storageData.getAttr5());
         }
     }
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
index 74b1071ded..44a205dd9b 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
@@ -62,6 +62,10 @@ public class K8SService extends K8SMetrics {
     @Setter
     @ScopeDefaultColumn.DefinedByField(columnName = "attr4", isAttribute = 
true)
     private String attr4;
+    @Getter
+    @Setter
+    @ScopeDefaultColumn.DefinedByField(columnName = "attr5", isAttribute = 
true)
+    private String attr5;
 
     @Override
     public int scope() {
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
index 0160c997f3..f4ceea1bc8 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
@@ -104,6 +104,10 @@ public class Service extends Source {
     @Setter
     @ScopeDefaultColumn.DefinedByField(columnName = "attr4", isAttribute = 
true)
     private String attr4;
+    @Getter
+    @Setter
+    @ScopeDefaultColumn.DefinedByField(columnName = "attr5", isAttribute = 
true)
+    private String attr5;
 
     public String getTag(String key) {
         return originalTags.get(key);
diff --git 
a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/mqe/rt/MQEVisitor.java
 
b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/mqe/rt/MQEVisitor.java
index b354f2edd6..5368f3cb8f 100644
--- 
a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/mqe/rt/MQEVisitor.java
+++ 
b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/mqe/rt/MQEVisitor.java
@@ -129,7 +129,7 @@ public class MQEVisitor extends MQEVisitorBase {
                         if (topN <= 0) {
                             throw new IllegalExpressionException("TopN value 
must be > 0.");
                         }
-                        String[] attrsCondition = new String[5];
+                        String[] attrsCondition = new String[6];
                         if (parent.attributeList() != null) {
                             for (MQEParser.AttributeContext attributeContext : 
parent.attributeList().attribute()) {
                                 String attrName = 
attributeContext.attributeName().getText();

Reply via email to