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 2023/03/26 08:53:26 UTC

[skywalking] branch master updated: Fix additional table is not created for the next day (#10594)

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 ffc8453332 Fix additional table is not created for the next day (#10594)
ffc8453332 is described below

commit ffc8453332bc991e97ad4c745e56437b5464e875
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Sun Mar 26 16:53:15 2023 +0800

    Fix additional table is not created for the next day (#10594)
---
 .../storage/plugin/jdbc/common/JDBCTableInstaller.java    | 15 +++++++++------
 .../plugin/jdbc/common/dao/JDBCHistoryDeleteDAO.java      |  3 +--
 .../plugin/jdbc/common/dao/JDBCHistoryDeleteDAOIT.java    |  2 +-
 3 files changed, 11 insertions(+), 9 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/JDBCTableInstaller.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/JDBCTableInstaller.java
index 956aec6585..c41eb58363 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/JDBCTableInstaller.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/JDBCTableInstaller.java
@@ -21,7 +21,9 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.common;
 import com.google.gson.JsonObject;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.analysis.DownSampling;
 import org.apache.skywalking.oap.server.core.analysis.Layer;
+import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
 import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
 import org.apache.skywalking.oap.server.core.storage.model.ColumnName;
 import org.apache.skywalking.oap.server.core.storage.model.Model;
@@ -86,15 +88,16 @@ public class JDBCTableInstaller extends ModelInstaller {
     @Override
     @SneakyThrows
     public void createTable(Model model) {
-        final var table = TableHelper.getLatestTableForWrite(model);
-        createTable(model, table);
+        final var dayTimeBucket = TimeBucket.getTimeBucket(System.currentTimeMillis(), DownSampling.Day);
+        createTable(model, dayTimeBucket);
     }
 
     @SneakyThrows
-    public void createTable(Model model, String table) {
+    public void createTable(Model model, long timeBucket) {
+        final var table = TableHelper.getTable(model, timeBucket);
         createOrUpdateTable(table, model.getColumns(), false);
         createOrUpdateTableIndexes(table, model.getColumns(), false);
-        createAdditionalTable(model);
+        createAdditionalTable(model, timeBucket);
     }
 
     public String getColumnDefinition(ModelColumn column) {
@@ -214,10 +217,10 @@ public class JDBCTableInstaller extends ModelInstaller {
         c.execute(sql.toString());
     }
 
-    public void createAdditionalTable(Model model) throws SQLException {
+    public void createAdditionalTable(Model model, long timeBucket) throws SQLException {
         final var additionalTables = model.getSqlDBModelExtension().getAdditionalTables();
         for (final var table : additionalTables.values()) {
-            final var tableName = TableHelper.getLatestTableForWrite(table.getName());
+            final var tableName = TableHelper.getTable(table.getName(), timeBucket);
             createOrUpdateTable(tableName, table.getColumns(), true);
             createOrUpdateTableIndexes(tableName, table.getColumns(), true);
         }
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 9aa92dd464..8d716e7af3 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
@@ -103,8 +103,7 @@ public class JDBCHistoryDeleteDAO implements IHistoryDeleteDAO {
 
         // Create tables for the next day.
         final var nextTimeBucket = TimeBucket.getTimeBucket(clock.millis() + TimeUnit.DAYS.toMillis(1), DownSampling.Day);
-        final var table = TableHelper.getTable(model, nextTimeBucket);
-        modelInstaller.createTable(model, table);
+        modelInstaller.createTable(model, nextTimeBucket);
 
         lastDeletedTimeBucket.put(model.getName(), deadline);
     }
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCHistoryDeleteDAOIT.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCHistoryDeleteDAOIT.java
index 0199c9acea..9783096b48 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCHistoryDeleteDAOIT.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCHistoryDeleteDAOIT.java
@@ -117,7 +117,7 @@ class JDBCHistoryDeleteDAOIT {
     void test() throws SQLException {
         // Table install should create the table.
         var clock = Clock.fixed(Instant.parse("2023-03-17T10:00:00Z"), ZoneId.systemDefault());
-        tableInstaller.createTable(model, "service_traffic_20230317");
+        tableInstaller.createTable(model, 20230317);
 
         var jdbcHistoryDeleteDAO = new JDBCHistoryDeleteDAO(jdbcClient, tableHelper, tableInstaller, clock);
         jdbcHistoryDeleteDAO.deleteHistory(model, "time_bucket", 3);