You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2023/03/27 13:24:32 UTC

[skywalking] branch master updated: Retain +1 day tables when deleting history (#10597)

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 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 de047de87c Retain +1 day tables when deleting history (#10597)
de047de87c is described below

commit de047de87cb7c769ceacdfc1ccc4235b4005c873
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Mon Mar 27 21:24:08 2023 +0800

    Retain +1 day tables when deleting history (#10597)
---
 .../storage/plugin/jdbc/common/TableHelper.java    | 32 +++++++++++-----------
 .../jdbc/common/dao/JDBCHistoryDeleteDAO.java      |  6 ++--
 2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/TableHelper.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/TableHelper.java
index cac5de380e..08f6160a16 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/TableHelper.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/TableHelper.java
@@ -85,15 +85,6 @@ public class TableHelper {
         return tableName + Const.UNDERSCORE + dayTimeBucket;
     }
 
-    /**
-     * @param rawTableName the table name without time bucket suffix.
-     * @return the table name with time bucket.
-     */
-    public static String getLatestTableForWrite(String rawTableName) {
-        final var dayTimeBucket = TimeBucket.getTimeBucket(System.currentTimeMillis(), DownSampling.Day);
-        return rawTableName + Const.UNDERSCORE + dayTimeBucket;
-    }
-
     public static String getTable(Model model, long timeBucket) {
         final var tableName = getTableName(model);
         if (timeBucket == 0) {
@@ -116,6 +107,22 @@ public class TableHelper {
     }
 
     public List<String> getTablesForRead(String modelName, long timeBucketStart, long timeBucketEnd) {
+        return getTablesInTimeBucketRange(modelName, timeBucketStart, timeBucketEnd)
+            .stream()
+            .filter(table -> {
+                try {
+                    return tableExistence.get(table);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            })
+            .collect(toList());
+    }
+
+    /**
+     * Similar to {@link #getTablesForRead(String, long, long)}, but don't check the table existence.
+     */
+    public List<String> getTablesInTimeBucketRange(String modelName, long timeBucketStart, long timeBucketEnd) {
         final var model = TableMetaInfo.get(modelName);
         final var tableName = getTableName(model);
 
@@ -133,13 +140,6 @@ public class TableHelper {
             .distinct()
             .filter(ttlTimeBucketRange::contains)
             .mapToObj(it -> tableName + "_" + it)
-            .filter(table -> {
-                try {
-                    return tableExistence.get(table);
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-            })
             .collect(toList());
     }
 
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCHistoryDeleteDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCHistoryDeleteDAO.java
index 8d716e7af3..43354807bd 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCHistoryDeleteDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCHistoryDeleteDAO.java
@@ -50,8 +50,8 @@ public class JDBCHistoryDeleteDAO implements IHistoryDeleteDAO {
     @Override
     @SneakyThrows
     public void deleteHistory(Model model, String timeBucketColumnName, int ttl) {
-        final var endTimeBucket = TimeBucket.getTimeBucket(clock.millis(), DownSampling.Day);
-        final var startTimeBucket = endTimeBucket - ttl;
+        final var endTimeBucket = TimeBucket.getTimeBucket(clock.millis() + TimeUnit.DAYS.toMillis(1), DownSampling.Day);
+        final var startTimeBucket = endTimeBucket - ttl - 1;
         log.info(
             "Deleting history data, ttl: {}, now: {}. Keep [{}, {}]",
             ttl,
@@ -73,7 +73,7 @@ public class JDBCHistoryDeleteDAO implements IHistoryDeleteDAO {
             return;
         }
 
-        final var ttlTables = tableHelper.getTablesForRead(model.getName(), startTimeBucket, endTimeBucket);
+        final var ttlTables = tableHelper.getTablesInTimeBucketRange(model.getName(), startTimeBucket, endTimeBucket);
         final var tablesToDrop = new HashSet<String>();
         final var tableName = TableHelper.getTableName(model);