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