You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2022/11/25 16:20:39 UTC

[skywalking] branch master updated: Fix `BanyanDB.ShardingKey` annotation missed in the generated OAL metrics classes. (#10032)

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/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 6b60357324 Fix `BanyanDB.ShardingKey` annotation missed in the generated OAL metrics classes. (#10032)
6b60357324 is described below

commit 6b60357324fd3665edcbe8076aa4fe795ea30b9b
Author: 吴晟 Wu Sheng <wu...@foxmail.com>
AuthorDate: Sat Nov 26 00:20:33 2022 +0800

    Fix `BanyanDB.ShardingKey` annotation missed in the generated OAL metrics classes. (#10032)
---
 docs/en/changes/changes.md                         |  1 +
 .../org/apache/skywalking/oal/rt/OALRuntime.java   |  3 +-
 .../storage/plugin/banyandb/MetadataRegistry.java  | 38 +++++++++++-----------
 3 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index daa3d1bda6..b0efc15fb2 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -132,6 +132,7 @@
   requires altering this column or removing these tables before OAP starts, if bump up from previous releases.
 * Fix Elasticsearch storage: In `No-Sharding Mode`, add specific analyzer to the template before index creation to avoid update index error.
 * Internal API: remove undocumented ElasticSearch API usage and use documented one.
+* Fix `BanyanDB.ShardingKey` annotation missed in the generated OAL metrics classes.
 
 #### UI
 
diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java
index f9b9a72717..2b949ee169 100644
--- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java
@@ -268,12 +268,13 @@ public class OALRuntime implements OALEngine {
                 if (field.getType().equals(String.class)) {
                     columnAnnotation.addMemberValue("length", new IntegerMemberValue(constPool, field.getLength()));
                 }
+                annotationsAttribute.addAnnotation(columnAnnotation);
                 if (field.isID()) {
                     // Add shardingKeyIdx = 0 to column annotation.
                     Annotation banyanShardingKeyAnnotation = new Annotation(BanyanDB.ShardingKey.class.getName(), constPool);
                     banyanShardingKeyAnnotation.addMemberValue("index", new IntegerMemberValue(constPool, 0));
+                    annotationsAttribute.addAnnotation(banyanShardingKeyAnnotation);
                 }
-                annotationsAttribute.addAnnotation(columnAnnotation);
 
                 newField.getFieldInfo().addAttribute(annotationsAttribute);
             } catch (CannotCompileException e) {
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
index f679deca66..e32dfa0e74 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
@@ -20,6 +20,18 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb;
 
 import com.google.gson.JsonObject;
 import io.grpc.Status;
+import java.lang.reflect.ParameterizedType;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.annotation.Nonnull;
 import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -48,19 +60,6 @@ import org.apache.skywalking.oap.server.core.storage.annotation.ValueColumnMetad
 import org.apache.skywalking.oap.server.core.storage.model.Model;
 import org.apache.skywalking.oap.server.core.storage.model.ModelColumn;
 import org.apache.skywalking.oap.server.core.storage.type.StorageDataComplexObject;
-
-import javax.annotation.Nonnull;
-import java.lang.reflect.ParameterizedType;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 import org.apache.skywalking.oap.server.library.util.StringUtil;
 
 @Slf4j
@@ -75,7 +74,7 @@ public enum MetadataRegistry {
         Map<String, ModelColumn> modelColumnMap = model.getColumns().stream()
                 .collect(Collectors.toMap(modelColumn -> modelColumn.getColumnName().getStorageName(), Function.identity()));
         // parse and set sharding keys
-        List<String> entities = parseEntityNames(modelColumnMap);
+        List<String> shardingColumns = parseEntityNames(modelColumnMap);
         // parse tag metadata
         // this can be used to build both
         // 1) a list of TagFamilySpec,
@@ -100,10 +99,10 @@ public enum MetadataRegistry {
                 .collect(Collectors.toList());
 
         final Stream.Builder builder = Stream.create(schemaMetadata.getGroup(), schemaMetadata.name());
-        if (entities.isEmpty()) {
+        if (shardingColumns.isEmpty()) {
             throw new IllegalStateException("sharding keys of model[stream." + model.getName() + "] must not be empty");
         }
-        builder.setEntityRelativeTags(entities);
+        builder.setEntityRelativeTags(shardingColumns);
         builder.addTagFamilies(tagFamilySpecs);
         builder.addIndexes(indexRules);
         registry.put(schemaMetadata.name(), schemaBuilder.build());
@@ -116,7 +115,7 @@ public enum MetadataRegistry {
         Map<String, ModelColumn> modelColumnMap = model.getColumns().stream()
                 .collect(Collectors.toMap(modelColumn -> modelColumn.getColumnName().getStorageName(), Function.identity()));
         // parse and set sharding keys
-        List<String> entities = parseEntityNames(modelColumnMap);
+        List<String> shardingColumns = parseEntityNames(modelColumnMap);
         // parse tag metadata
         // this can be used to build both
         // 1) a list of TagFamilySpec,
@@ -136,10 +135,11 @@ public enum MetadataRegistry {
 
         final Measure.Builder builder = Measure.create(schemaMetadata.getGroup(), schemaMetadata.name(),
                 downSamplingDuration(model.getDownsampling()));
-        if (entities.isEmpty()) { // if shardingKeys is empty, for measure, we can use ID as a single sharding key.
+        if (shardingColumns.isEmpty()) {
+            // if shardingKeys is empty, for measure, we can use ID as a single sharding key.
             builder.setEntityRelativeTags(Measure.ID);
         } else {
-            builder.setEntityRelativeTags(entities);
+            builder.setEntityRelativeTags(shardingColumns);
         }
         builder.addTagFamilies(tagFamilySpecs);
         builder.addIndexes(indexRules);