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

danny0405 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 93794743d71 [HUDI-6196] Keep compatibility for old version archival 
instants without ACTION_STATE field (#8607)
93794743d71 is described below

commit 93794743d71e28dc846329d47aa6ec1ca184268d
Author: Prashant Wason <[email protected]>
AuthorDate: Tue May 9 19:29:44 2023 -0700

    [HUDI-6196] Keep compatibility for old version archival instants without 
ACTION_STATE field (#8607)
---
 .../common/table/timeline/HoodieArchivedTimeline.java    | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git 
a/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieArchivedTimeline.java
 
b/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieArchivedTimeline.java
index d5145ee0c6c..eb4dc631ed6 100644
--- 
a/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieArchivedTimeline.java
+++ 
b/hudi-common/src/main/java/org/apache/hudi/common/table/timeline/HoodieArchivedTimeline.java
@@ -143,7 +143,11 @@ public class HoodieArchivedTimeline extends 
HoodieDefaultTimeline {
 
   public void loadCompletedInstantDetailsInMemory() {
     loadInstants(null, true,
-        record -> 
HoodieInstant.State.COMPLETED.toString().equals(record.get(ACTION_STATE).toString()));
+        record -> {
+          // Very old archived instants don't have action state set.
+          Object action = record.get(ACTION_STATE);
+          return action == null || 
HoodieInstant.State.COMPLETED.toString().equals(action.toString());
+        });
   }
 
   public void loadCompactionDetailsInMemory(String compactionInstantTime) {
@@ -152,9 +156,13 @@ public class HoodieArchivedTimeline extends 
HoodieDefaultTimeline {
 
   public void loadCompactionDetailsInMemory(String startTs, String endTs) {
     // load compactionPlan
-    loadInstants(new TimeRangeFilter(startTs, endTs), true, record ->
-        
record.get(ACTION_TYPE_KEY).toString().equals(HoodieTimeline.COMPACTION_ACTION)
-            && 
HoodieInstant.State.INFLIGHT.toString().equals(record.get(ACTION_STATE).toString())
+    loadInstants(new TimeRangeFilter(startTs, endTs), true,
+        record -> {
+          // Older files don't have action state set.
+          Object action = record.get(ACTION_STATE);
+          return 
record.get(ACTION_TYPE_KEY).toString().equals(HoodieTimeline.COMPACTION_ACTION)
+            && (action == null || 
HoodieInstant.State.INFLIGHT.toString().equals(action.toString()));
+      }
     );
   }
 

Reply via email to