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 <[email protected]> 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()); }
