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);