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

Reply via email to