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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5e2290e260a [MINOR] Fix flaky test testMetadataRollbackWithCompaction 
(#11143)
5e2290e260a is described below

commit 5e2290e260aa288f3f225abe071577c8bc23c692
Author: Danny Chan <[email protected]>
AuthorDate: Fri May 3 18:46:05 2024 +0800

    [MINOR] Fix flaky test testMetadataRollbackWithCompaction (#11143)
---
 .../hudi/client/TestJavaHoodieBackedMetadata.java  | 29 ++++++++++------------
 .../functional/TestHoodieBackedMetadata.java       | 29 ++++++++++------------
 2 files changed, 26 insertions(+), 32 deletions(-)

diff --git 
a/hudi-client/hudi-java-client/src/test/java/org/apache/hudi/client/TestJavaHoodieBackedMetadata.java
 
b/hudi-client/hudi-java-client/src/test/java/org/apache/hudi/client/TestJavaHoodieBackedMetadata.java
index 98027b40e51..017998f0484 100644
--- 
a/hudi-client/hudi-java-client/src/test/java/org/apache/hudi/client/TestJavaHoodieBackedMetadata.java
+++ 
b/hudi-client/hudi-java-client/src/test/java/org/apache/hudi/client/TestJavaHoodieBackedMetadata.java
@@ -153,6 +153,8 @@ import static 
org.apache.hudi.common.model.WriteOperationType.DELETE;
 import static org.apache.hudi.common.model.WriteOperationType.INSERT;
 import static org.apache.hudi.common.model.WriteOperationType.UPSERT;
 import static 
org.apache.hudi.common.table.HoodieTableMetaClient.METAFOLDER_NAME;
+import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.GREATER_THAN;
+import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.ROLLBACK_ACTION;
 import static 
org.apache.hudi.common.testutils.HoodieTestDataGenerator.TRIP_EXAMPLE_SCHEMA;
 import static 
org.apache.hudi.common.testutils.HoodieTestDataGenerator.getNextCommitTime;
 import static 
org.apache.hudi.config.HoodieCompactionConfig.INLINE_COMPACT_NUM_DELTA_COMMITS;
@@ -747,22 +749,17 @@ public class TestJavaHoodieBackedMetadata extends 
TestHoodieMetadataBase {
       client.commit(newCommitTime3, writeStatuses);
 
       // collect all commit meta files from metadata table.
-      List<StoragePathInfo> metaFiles = 
metaClient.getStorage().listDirectEntries(
-          new StoragePath(metaClient.getMetaPath() + "/metadata/.hoodie"));
-      List<StoragePathInfo> commit3Files = metaFiles.stream()
-          .filter(fileInfo ->
-              fileInfo.getPath().getName().contains(newCommitTime3)
-                  && 
fileInfo.getPath().getName().contains(HoodieTimeline.DELTA_COMMIT_ACTION))
-          .collect(Collectors.toList());
-      List<StoragePathInfo> rollbackFiles = metaFiles.stream()
-          .filter(fileStatus ->
-              fileStatus.getPath().getName().endsWith("." + 
HoodieTimeline.ROLLBACK_ACTION))
-          .collect(Collectors.toList());
-
-      // ensure commit2's delta commit in MDT has last mod time > the actual 
rollback for previous failed commit i.e. commit2.
-      // if rollback wasn't eager, rollback's last mod time will be lower than 
the commit3'd delta commit last mod time.
-      assertTrue(
-          commit3Files.get(0).getModificationTime() > 
rollbackFiles.get(0).getModificationTime());
+      HoodieTableMetaClient metadataMetaClient = 
HoodieTestUtils.init(storageConf, 
HoodieTableMetadata.getMetadataTableBasePath(basePath), tableType, new 
Properties());
+      String completionTimeForCommit3 = 
metadataMetaClient.getActiveTimeline().filter(instant -> 
instant.getTimestamp().equals(newCommitTime3)).firstInstant()
+          .map(HoodieInstant::getCompletionTime)
+          .orElseThrow(() -> new IllegalStateException(newCommitTime3 + " 
should exist on the metadata"));
+      String completionTimeForRollback = 
metadataMetaClient.getActiveTimeline().filter(instant -> 
instant.getAction().equals(ROLLBACK_ACTION)).firstInstant()
+          .map(HoodieInstant::getCompletionTime)
+          .orElseThrow(() -> new IllegalStateException("A rollback commit 
should exist on the metadata"));
+
+      // ensure commit2's delta commit in MDT has completion time > the actual 
rollback for previous failed commit i.e. commit2.
+      // if rollback wasn't eager, rollback's completion time will be lower 
than the commit3'd delta commit completion time.
+      assertTrue(HoodieTimeline.compareTimestamps(completionTimeForCommit3, 
GREATER_THAN, completionTimeForRollback));
     }
   }
 
diff --git 
a/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/client/functional/TestHoodieBackedMetadata.java
 
b/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/client/functional/TestHoodieBackedMetadata.java
index 258f40e6ff7..fc55c6723ee 100644
--- 
a/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/client/functional/TestHoodieBackedMetadata.java
+++ 
b/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/client/functional/TestHoodieBackedMetadata.java
@@ -167,8 +167,10 @@ import static 
org.apache.hudi.common.table.HoodieTableMetaClient.METAFOLDER_NAME
 import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.COMMIT_ACTION;
 import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.COMMIT_EXTENSION;
 import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.DELTA_COMMIT_EXTENSION;
+import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.GREATER_THAN;
 import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.INFLIGHT_EXTENSION;
 import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.REQUESTED_EXTENSION;
+import static 
org.apache.hudi.common.table.timeline.HoodieTimeline.ROLLBACK_ACTION;
 import static 
org.apache.hudi.common.testutils.HoodieTestDataGenerator.TRIP_EXAMPLE_SCHEMA;
 import static 
org.apache.hudi.common.testutils.HoodieTestDataGenerator.getNextCommitTime;
 import static 
org.apache.hudi.config.HoodieCompactionConfig.INLINE_COMPACT_NUM_DELTA_COMMITS;
@@ -1059,22 +1061,17 @@ public class TestHoodieBackedMetadata extends 
TestHoodieMetadataBase {
       client.commit(newCommitTime3, writeStatuses);
 
       // collect all commit meta files from metadata table.
-      List<StoragePathInfo> metaFiles = metaClient.getStorage()
-          .listDirectEntries(new StoragePath(metaClient.getMetaPath() + 
"/metadata/.hoodie"));
-      List<StoragePathInfo> commit3Files = metaFiles.stream()
-          .filter(pathInfo ->
-              pathInfo.getPath().getName().contains(newCommitTime3)
-                  && 
pathInfo.getPath().getName().contains(HoodieTimeline.DELTA_COMMIT_ACTION))
-          .collect(Collectors.toList());
-      List<StoragePathInfo> rollbackFiles = metaFiles.stream()
-          .filter(pathInfo ->
-              pathInfo.getPath().getName().endsWith("." + 
HoodieTimeline.ROLLBACK_ACTION))
-          .collect(Collectors.toList());
-
-      // ensure commit2's delta commit in MDT has last mod time > the actual 
rollback for previous failed commit i.e. commit2.
-      // if rollback wasn't eager, rollback's last mod time will be lower than 
the commit3'd delta commit last mod time.
-      assertTrue(
-          commit3Files.get(0).getModificationTime() > 
rollbackFiles.get(0).getModificationTime());
+      HoodieTableMetaClient metadataMetaClient = 
HoodieTestUtils.init(storageConf, 
HoodieTableMetadata.getMetadataTableBasePath(basePath), tableType, new 
Properties());
+      String completionTimeForCommit3 = 
metadataMetaClient.getActiveTimeline().filter(instant -> 
instant.getTimestamp().equals(newCommitTime3)).firstInstant()
+          .map(HoodieInstant::getCompletionTime)
+          .orElseThrow(() -> new IllegalStateException(newCommitTime3 + " 
should exist on the metadata"));
+      String completionTimeForRollback = 
metadataMetaClient.getActiveTimeline().filter(instant -> 
instant.getAction().equals(ROLLBACK_ACTION)).firstInstant()
+          .map(HoodieInstant::getCompletionTime)
+          .orElseThrow(() -> new IllegalStateException("A rollback commit 
should exist on the metadata"));
+
+      // ensure commit2's delta commit in MDT has completion time > the actual 
rollback for previous failed commit i.e. commit2.
+      // if rollback wasn't eager, rollback's last completion time will be 
lower than the commit3'd delta commit completion time.
+      assertTrue(HoodieTimeline.compareTimestamps(completionTimeForCommit3, 
GREATER_THAN, completionTimeForRollback));
     }
   }
 

Reply via email to