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

lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new c7170e60f [flink] Make FileStoreLookupFunction.refreshBlacklist 
nullable to avoid performance regression
c7170e60f is described below

commit c7170e60f41a263770a3f4ba9d08b53ecdf69e9d
Author: Jingsong <[email protected]>
AuthorDate: Tue Nov 5 18:27:25 2024 +0800

    [flink] Make FileStoreLookupFunction.refreshBlacklist nullable to avoid 
performance regression
---
 .../paimon/flink/lookup/FileStoreLookupFunction.java |  8 ++++----
 .../apache/paimon/flink/lookup/RefreshBlacklist.java | 20 ++++++++++++++++----
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/FileStoreLookupFunction.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/FileStoreLookupFunction.java
index 1c5619133..9503960fb 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/FileStoreLookupFunction.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/FileStoreLookupFunction.java
@@ -88,7 +88,7 @@ public class FileStoreLookupFunction implements Serializable, 
Closeable {
     private final List<String> projectFields;
     private final List<String> joinKeys;
     @Nullable private final Predicate predicate;
-    private final RefreshBlacklist refreshBlacklist;
+    @Nullable private final RefreshBlacklist refreshBlacklist;
 
     private transient File path;
     private transient LookupTable lookupTable;
@@ -136,7 +136,7 @@ public class FileStoreLookupFunction implements 
Serializable, Closeable {
         this.predicate = predicate;
 
         this.refreshBlacklist =
-                new RefreshBlacklist(
+                RefreshBlacklist.create(
                         
table.options().get(LOOKUP_REFRESH_TIME_PERIODS_BLACKLIST.key()));
     }
 
@@ -284,7 +284,7 @@ public class FileStoreLookupFunction implements 
Serializable, Closeable {
     @VisibleForTesting
     void tryRefresh() throws Exception {
         // 1. check if this time is in black list
-        if (!refreshBlacklist.canRefresh()) {
+        if (refreshBlacklist != null && !refreshBlacklist.canRefresh()) {
             return;
         }
 
@@ -335,7 +335,7 @@ public class FileStoreLookupFunction implements 
Serializable, Closeable {
 
     @VisibleForTesting
     long nextBlacklistCheckTime() {
-        return refreshBlacklist.nextBlacklistCheckTime();
+        return refreshBlacklist == null ? -1 : 
refreshBlacklist.nextBlacklistCheckTime();
     }
 
     @Override
diff --git 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/RefreshBlacklist.java
 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/RefreshBlacklist.java
index 96923550b..e20294fe0 100644
--- 
a/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/RefreshBlacklist.java
+++ 
b/paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/RefreshBlacklist.java
@@ -25,6 +25,8 @@ import org.apache.paimon.utils.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.annotation.Nullable;
+
 import java.time.format.DateTimeParseException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -40,12 +42,22 @@ public class RefreshBlacklist {
 
     private long nextBlacklistCheckTime;
 
-    public RefreshBlacklist(String blacklist) {
-        this.timePeriodsBlacklist = parseTimePeriodsBlacklist(blacklist);
+    public RefreshBlacklist(List<Pair<Long, Long>> timePeriodsBlacklist) {
+        this.timePeriodsBlacklist = timePeriodsBlacklist;
         this.nextBlacklistCheckTime = -1;
     }
 
-    private List<Pair<Long, Long>> parseTimePeriodsBlacklist(String blacklist) 
{
+    @Nullable
+    public static RefreshBlacklist create(String blacklist) {
+        List<Pair<Long, Long>> timePeriodsBlacklist = 
parseTimePeriodsBlacklist(blacklist);
+        if (timePeriodsBlacklist.isEmpty()) {
+            return null;
+        }
+
+        return new RefreshBlacklist(timePeriodsBlacklist);
+    }
+
+    private static List<Pair<Long, Long>> parseTimePeriodsBlacklist(String 
blacklist) {
         if (StringUtils.isNullOrWhitespaceOnly(blacklist)) {
             return Collections.emptyList();
         }
@@ -69,7 +81,7 @@ public class RefreshBlacklist {
         return result;
     }
 
-    private long parseToMillis(String dateTime) {
+    private static long parseToMillis(String dateTime) {
         try {
             return DateTimeUtils.parseTimestampData(dateTime + ":00", 3, 
TimeZone.getDefault())
                     .getMillisecond();

Reply via email to