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

sivabalan pushed a commit to branch release-0.10.1
in repository https://gitbox.apache.org/repos/asf/hudi.git

commit 101be1a0139ad550a509cf3d2c2a101ea62930b4
Author: Danny Chan <[email protected]>
AuthorDate: Mon Jan 17 18:18:45 2022 +0800

    [HUDI-3257] Excluding clustering instants from pending rollback info (#4616)
---
 .../org/apache/hudi/client/AbstractHoodieWriteClient.java    | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/AbstractHoodieWriteClient.java
 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/AbstractHoodieWriteClient.java
index 76b10fd..8da1db5 100644
--- 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/AbstractHoodieWriteClient.java
+++ 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/AbstractHoodieWriteClient.java
@@ -906,13 +906,17 @@ public abstract class AbstractHoodieWriteClient<T extends 
HoodieRecordPayload, I
   protected Map<String, Option<HoodiePendingRollbackInfo>> 
getPendingRollbackInfos(HoodieTableMetaClient metaClient) {
     List<HoodieInstant> instants = 
metaClient.getActiveTimeline().filterPendingRollbackTimeline().getInstants().collect(Collectors.toList());
     Map<String, Option<HoodiePendingRollbackInfo>> infoMap = new HashMap<>();
-    HoodieTimeline pendingCompactionTimeline = 
metaClient.getActiveTimeline().filterPendingCompactionTimeline();
     for (HoodieInstant instant : instants) {
       try {
         HoodieRollbackPlan rollbackPlan = 
RollbackUtils.getRollbackPlan(metaClient, instant);
-        String instantToRollback = 
rollbackPlan.getInstantToRollback().getCommitTime();
-        if (!pendingCompactionTimeline.containsInstant(instantToRollback)) {
-          infoMap.putIfAbsent(instantToRollback, Option.of(new 
HoodiePendingRollbackInfo(instant, rollbackPlan)));
+        String action = rollbackPlan.getInstantToRollback().getAction();
+        if (!HoodieTimeline.COMPACTION_ACTION.equals(action)) {
+          boolean isClustering = 
HoodieTimeline.REPLACE_COMMIT_ACTION.equals(action)
+              && ClusteringUtils.getClusteringPlan(metaClient, 
instant).isPresent();
+          if (!isClustering) {
+            String instantToRollback = 
rollbackPlan.getInstantToRollback().getCommitTime();
+            infoMap.putIfAbsent(instantToRollback, Option.of(new 
HoodiePendingRollbackInfo(instant, rollbackPlan)));
+          }
         }
       } catch (IOException e) {
         LOG.warn("Fetching rollback plan failed for " + infoMap + ", skip the 
plan", e);

Reply via email to