diff --git a/hudi-common/src/main/java/org/apache/hudi/common/table/view/AbstractTableFileSystemView.java b/hudi-common/src/main/java/org/apache/hudi/common/table/view/AbstractTableFileSystemView.java index 1a2ce01d8087..d946cff95eb5 100644 --- a/hudi-common/src/main/java/org/apache/hudi/common/table/view/AbstractTableFileSystemView.java +++ b/hudi-common/src/main/java/org/apache/hudi/common/table/view/AbstractTableFileSystemView.java @@ -243,6 +243,16 @@ private void resetFileGroupsReplaced(HoodieTimeline timeline) { + replacedFileGroups.size() + " replaced file groups"); } + @Override + public void close() { + try { + writeLock.lock(); + clear(); + } finally { + writeLock.unlock(); + } + } + /** * Clears the partition Map and reset view states. */ @@ -250,12 +260,7 @@ private void resetFileGroupsReplaced(HoodieTimeline timeline) { public final void reset() { try { writeLock.lock(); - - addedPartitions.clear(); - resetViewState(); - - bootstrapIndex = null; - + clear(); // Initialize with new Hoodie timeline. init(metaClient, getTimeline()); } finally { @@ -263,6 +268,15 @@ public final void reset() { } } + /** + * Clear the resource. + */ + private void clear() { + addedPartitions.clear(); + resetViewState(); + bootstrapIndex = null; + } + /** * Allows all view metadata in file system view storage to be reset by subclasses. */ diff --git a/hudi-common/src/main/java/org/apache/hudi/common/table/view/HoodieTableFileSystemView.java b/hudi-common/src/main/java/org/apache/hudi/common/table/view/HoodieTableFileSystemView.java index 0bbbf3e9e530..b8f7f313a158 100644 --- a/hudi-common/src/main/java/org/apache/hudi/common/table/view/HoodieTableFileSystemView.java +++ b/hudi-common/src/main/java/org/apache/hudi/common/table/view/HoodieTableFileSystemView.java @@ -349,12 +349,12 @@ protected Option getReplaceInstant(final HoodieFileGroupId fileGr @Override public void close() { - closed = true; - super.reset(); + super.close(); partitionToFileGroupsMap = null; fgIdToPendingCompaction = null; fgIdToBootstrapBaseFile = null; fgIdToReplaceInstants = null; + closed = true; } @Override diff --git a/hudi-common/src/main/java/org/apache/hudi/common/table/view/RemoteHoodieTableFileSystemView.java b/hudi-common/src/main/java/org/apache/hudi/common/table/view/RemoteHoodieTableFileSystemView.java index 4c2153010207..c3a3847fd769 100644 --- a/hudi-common/src/main/java/org/apache/hudi/common/table/view/RemoteHoodieTableFileSystemView.java +++ b/hudi-common/src/main/java/org/apache/hudi/common/table/view/RemoteHoodieTableFileSystemView.java @@ -126,7 +126,7 @@ public class RemoteHoodieTableFileSystemView implements SyncableFileSystemView, private final int serverPort; private final String basePath; private final HoodieTableMetaClient metaClient; - private final HoodieTimeline timeline; + private HoodieTimeline timeline; private final ObjectMapper mapper; private final int timeoutSecs; @@ -450,6 +450,7 @@ public void close() { @Override public void reset() { + timeline = metaClient.reloadActiveTimeline().filterCompletedAndCompactionInstants(); refresh(); } diff --git a/hudi-flink/src/main/java/org/apache/hudi/sink/partitioner/profile/WriteProfile.java b/hudi-flink/src/main/java/org/apache/hudi/sink/partitioner/profile/WriteProfile.java index f6840e5ef77b..84fcd03f0833 100644 --- a/hudi-flink/src/main/java/org/apache/hudi/sink/partitioner/profile/WriteProfile.java +++ b/hudi-flink/src/main/java/org/apache/hudi/sink/partitioner/profile/WriteProfile.java @@ -249,7 +249,7 @@ public synchronized void reload(long checkpointId) { return; } this.metaClient.reloadActiveTimeline(); - this.fsView = getFileSystemView(); + this.fsView.sync(); recordProfile(); cleanMetadataCache(this.metaClient.getCommitsTimeline().filterCompletedInstants().getInstants()); this.smallFilesMap.clear();