You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by lu...@apache.org on 2022/12/07 14:19:22 UTC
[skywalking] 01/01: resolve issue #10104
This is an automated email from the ASF dual-hosted git repository.
lujiajing pushed a commit to branch optimize-banyandb-measure-integration
in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 24b4e460818d35f898d484851e7fa36ada33edde
Author: Megrez Lu <lu...@gmail.com>
AuthorDate: Wed Dec 7 22:18:59 2022 +0800
resolve issue #10104
---
.../src/main/resources/application.yml | 2 --
.../plugin/banyandb/BanyanDBStorageConfig.java | 14 --------------
.../storage/plugin/banyandb/MetadataRegistry.java | 21 ++++++++++++++++++---
3 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/oap-server/server-starter/src/main/resources/application.yml b/oap-server/server-starter/src/main/resources/application.yml
index b4e507dc30..b37ef62498 100644
--- a/oap-server/server-starter/src/main/resources/application.yml
+++ b/oap-server/server-starter/src/main/resources/application.yml
@@ -238,8 +238,6 @@ storage:
profileTaskQueryMaxSize: ${SW_STORAGE_BANYANDB_PROFILE_TASK_QUERY_MAX_SIZE:200} # the max number of fetch task in a request
streamBlockInterval: ${SW_STORAGE_BANYANDB_STREAM_BLOCK_INTERVAL:4} # Unit is hour
streamSegmentInterval: ${SW_STORAGE_BANYANDB_STREAM_SEGMENT_INTERVAL:24} # Unit is hour
- measureBlockInterval: ${SW_STORAGE_BANYANDB_MEASURE_BLOCK_INTERVAL:4} # Unit is hour
- measureSegmentInterval: ${SW_STORAGE_BANYANDB_MEASURE_SEGMENT_INTERVAL:24} # Unit is hour
agent-analyzer:
selector: ${SW_AGENT_ANALYZER:default}
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageConfig.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageConfig.java
index 3a6569135b..35f75b61c9 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageConfig.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageConfig.java
@@ -70,18 +70,4 @@ public class BanyanDBStorageConfig extends ModuleConfig {
* @since 9.3.0
*/
private int streamSegmentInterval;
- /**
- * block interval for Measure group.
- * Unit is hours.
- *
- * @since 9.3.0
- */
- private int measureBlockInterval;
- /**
- * segment interval for Measure group.
- * Unit is hours.
- *
- * @since 9.3.0
- */
- private int measureSegmentInterval;
}
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 e32dfa0e74..72a89f6796 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,7 @@ 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;
@@ -32,6 +33,7 @@ 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;
@@ -90,7 +92,7 @@ public enum MetadataRegistry {
String timestampColumn4Stream = model.getBanyanDBModelExtension().getTimestampColumn();
if (StringUtil.isBlank(timestampColumn4Stream)) {
throw new IllegalStateException(
- "Model[stream." + model.getName() + "] miss defined @BanyanDB.TimestampColumn");
+ "Model[stream." + model.getName() + "] miss defined @BanyanDB.TimestampColumn");
}
schemaBuilder.timestampColumn4Stream(timestampColumn4Stream);
List<IndexRule> indexRules = tags.stream()
@@ -354,11 +356,24 @@ public enum MetadataRegistry {
configService.getRecordDataTTL()
);
}
+ // FIX: address issue #10104
+ if (model.getDownsampling() == DownSampling.Minute) {
+ return new SchemaMetadata("measure-sampled", model.getName(), Kind.MEASURE,
+ model.getDownsampling(),
+ config.getMetricsShardsNumber(),
+ 4,
+ 24,
+ configService.getMetricsDataTTL());
+ }
+ // Solution: 2 * TTL < T * (1 + 0.8)
+ // e.g. if TTL=7, T=8: a new block/segment will be created at 14.4 days,
+ // while the first block has been deleted at 2*TTL
+ final int intervalDays = Double.valueOf(Math.ceil(configService.getMetricsDataTTL() * 2.0 / 1.8)).intValue();
return new SchemaMetadata("measure-default", model.getName(), Kind.MEASURE,
model.getDownsampling(),
config.getMetricsShardsNumber(),
- config.getMeasureBlockInterval(),
- config.getMeasureSegmentInterval(),
+ intervalDays * 24,
+ intervalDays * 24, // use 10-day/240-hour strategy
configService.getMetricsDataTTL());
}