From 6c450957ced051de6231ad047bce22752210b786 Mon Sep 17 00:00:00 2001 From: Raymond Xu <2701446+xushiyan@users.noreply.github.com> Date: Tue, 26 May 2020 09:23:34 -0700 Subject: [PATCH] [HUDI-690] Filter out inflight compaction in exporter (#1667) --- .../hudi/common/table/timeline/HoodieDefaultTimeline.java | 4 ++-- .../java/org/apache/hudi/utilities/HoodieSnapshotCopier.java | 4 ++-- .../org/apache/hudi/utilities/HoodieSnapshotExporter.java | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieDefaultTimeline.java b/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieDefaultTimeline.java index 5fd7b0c7f..2be4a9e63 100644 --- a/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieDefaultTimeline.java +++ b/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieDefaultTimeline.java @@ -152,8 +152,8 @@ public class HoodieDefaultTimeline implements HoodieTimeline { } /** - * Get all instants (commits, delta commits, clean, savepoint, rollback) that result in actions, in the active - * timeline. + * Get all instants (commits, delta commits, compaction, clean, savepoint, rollback) that result in actions, + * in the active timeline. */ public HoodieTimeline getAllCommitsTimeline() { return getTimelineOfActions(CollectionUtils.createSet(COMMIT_ACTION, DELTA_COMMIT_ACTION, diff --git a/hudi-utilities/src/main/java/org/apache/hudi/utilities/HoodieSnapshotCopier.java b/hudi-utilities/src/main/java/org/apache/hudi/utilities/HoodieSnapshotCopier.java index b97cd990f..651cbbf0e 100644 --- a/hudi-utilities/src/main/java/org/apache/hudi/utilities/HoodieSnapshotCopier.java +++ b/hudi-utilities/src/main/java/org/apache/hudi/utilities/HoodieSnapshotCopier.java @@ -74,10 +74,10 @@ public class HoodieSnapshotCopier implements Serializable { final SerializableConfiguration serConf = new SerializableConfiguration(jsc.hadoopConfiguration()); final HoodieTableMetaClient tableMetadata = new HoodieTableMetaClient(fs.getConf(), baseDir); final BaseFileOnlyView fsView = new HoodieTableFileSystemView(tableMetadata, - tableMetadata.getActiveTimeline().getCommitsTimeline().filterCompletedInstants()); + tableMetadata.getActiveTimeline().getCommitsAndCompactionTimeline().filterCompletedInstants()); // Get the latest commit Option latestCommit = - tableMetadata.getActiveTimeline().getCommitsTimeline().filterCompletedInstants().lastInstant(); + tableMetadata.getActiveTimeline().getCommitsAndCompactionTimeline().filterCompletedInstants().lastInstant(); if (!latestCommit.isPresent()) { LOG.warn("No commits present. Nothing to snapshot"); return; diff --git a/hudi-utilities/src/main/java/org/apache/hudi/utilities/HoodieSnapshotExporter.java b/hudi-utilities/src/main/java/org/apache/hudi/utilities/HoodieSnapshotExporter.java index 060d92836..7e21b4ebf 100644 --- a/hudi-utilities/src/main/java/org/apache/hudi/utilities/HoodieSnapshotExporter.java +++ b/hudi-utilities/src/main/java/org/apache/hudi/utilities/HoodieSnapshotExporter.java @@ -146,7 +146,8 @@ public class HoodieSnapshotExporter { private Option getLatestCommitTimestamp(FileSystem fs, Config cfg) { final HoodieTableMetaClient tableMetadata = new HoodieTableMetaClient(fs.getConf(), cfg.sourceBasePath); - Option latestCommit = tableMetadata.getActiveTimeline().getCommitsTimeline().filterCompletedInstants().lastInstant(); + Option latestCommit = tableMetadata.getActiveTimeline().getCommitsAndCompactionTimeline() + .filterCompletedInstants().lastInstant(); return latestCommit.isPresent() ? Option.of(latestCommit.get().getTimestamp()) : Option.empty(); } @@ -251,7 +252,7 @@ public class HoodieSnapshotExporter { FileSystem fs = FSUtils.getFs(cfg.sourceBasePath, jsc.hadoopConfiguration()); HoodieTableMetaClient tableMetadata = new HoodieTableMetaClient(fs.getConf(), cfg.sourceBasePath); return new HoodieTableFileSystemView(tableMetadata, tableMetadata - .getActiveTimeline().getCommitsTimeline().filterCompletedInstants()); + .getActiveTimeline().getCommitsAndCompactionTimeline().filterCompletedInstants()); } public static void main(String[] args) throws IOException {