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

sivabalan 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 adcc9dcd75d [HUDI-8798] Validate Metadata Table Enabled during 
Archival (#12549)
adcc9dcd75d is described below

commit adcc9dcd75d63972e9dd7f35394ef61d7df8ff52
Author: vamsikarnika <[email protected]>
AuthorDate: Wed Feb 12 20:42:11 2025 +0530

    [HUDI-8798] Validate Metadata Table Enabled during Archival (#12549)
    
    ---------
    
    Co-authored-by: Vamsi <[email protected]>
    Co-authored-by: Lokesh Jain <[email protected]>
---
 .../hudi/client/timeline/versioning/v1/TimelineArchiverV1.java   | 2 +-
 .../hudi/client/timeline/versioning/v2/TimelineArchiverV2.java   | 2 +-
 .../test/java/org/apache/hudi/io/TestHoodieTimelineArchiver.java | 9 +++++++++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/timeline/versioning/v1/TimelineArchiverV1.java
 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/timeline/versioning/v1/TimelineArchiverV1.java
index 594825ad9c1..3a4a4950563 100644
--- 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/timeline/versioning/v1/TimelineArchiverV1.java
+++ 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/timeline/versioning/v1/TimelineArchiverV1.java
@@ -295,7 +295,7 @@ public class TimelineArchiverV1<T extends 
HoodieAvroPayload, I, K, O> implements
 
     // If metadata table is enabled, do not archive instants which are more 
recent than the last compaction on the
     // metadata table.
-    if (table.getMetaClient().getTableConfig().isMetadataTableAvailable()) {
+    if (config.isMetadataTableEnabled() && 
table.getMetaClient().getTableConfig().isMetadataTableAvailable()) {
       try (HoodieTableMetadata tableMetadata = 
HoodieTableMetadata.create(table.getContext(), table.getStorage(), 
config.getMetadataConfig(), config.getBasePath())) {
         Option<String> latestCompactionTime = 
tableMetadata.getLatestCompactionTime();
         if (!latestCompactionTime.isPresent()) {
diff --git 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/timeline/versioning/v2/TimelineArchiverV2.java
 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/timeline/versioning/v2/TimelineArchiverV2.java
index 40f3abbc2bc..65e08920ae4 100644
--- 
a/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/timeline/versioning/v2/TimelineArchiverV2.java
+++ 
b/hudi-client/hudi-client-common/src/main/java/org/apache/hudi/client/timeline/versioning/v2/TimelineArchiverV2.java
@@ -208,7 +208,7 @@ public class TimelineArchiverV2<T extends 
HoodieAvroPayload, I, K, O> implements
 
     // 4. If metadata table is enabled, do not archive instants which are more 
recent than the last compaction on the
     // metadata table.
-    if (table.getMetaClient().getTableConfig().isMetadataTableAvailable()) {
+    if (config.isMetadataTableEnabled() && 
table.getMetaClient().getTableConfig().isMetadataTableAvailable()) {
       try (HoodieTableMetadata tableMetadata = HoodieTableMetadata.create(
           table.getContext(), table.getStorage(), config.getMetadataConfig(), 
config.getBasePath())) {
         Option<String> latestCompactionTime = 
tableMetadata.getLatestCompactionTime();
diff --git 
a/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/io/TestHoodieTimelineArchiver.java
 
b/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/io/TestHoodieTimelineArchiver.java
index bc2e2136b79..1f2566bf547 100644
--- 
a/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/io/TestHoodieTimelineArchiver.java
+++ 
b/hudi-client/hudi-spark-client/src/test/java/org/apache/hudi/io/TestHoodieTimelineArchiver.java
@@ -297,6 +297,10 @@ public class TestHoodieTimelineArchiver extends 
HoodieSparkClientTestHarness {
             getAllArchivedCommitInstants(Arrays.asList("00000001", 
"00000002")),
             getActiveCommitInstants(Arrays.asList("00000003", "00000004", 
"00000005", "00000006")),
             commitsAfterArchival, false);
+        if (enableMetadata) {
+          // disable metadata table in the write config but files metadata 
partition is still available
+          disableMetadataTable(writeConfig);
+        }
       } else if (i < 8) {
         assertEquals(originalCommits, commitsAfterArchival);
       } else if (i == 8) {
@@ -1820,6 +1824,11 @@ public class TestHoodieTimelineArchiver extends 
HoodieSparkClientTestHarness {
     return archiveAndGetCommitsList(writeConfig, false);
   }
 
+  private void disableMetadataTable(HoodieWriteConfig writeConfig) {
+    writeConfig.setValue(HoodieMetadataConfig.ENABLE.key(), "false");
+    
writeConfig.getMetadataConfig().setValue(HoodieMetadataConfig.ENABLE.key(), 
"false");
+  }
+
   private Pair<List<HoodieInstant>, List<HoodieInstant>> 
archiveAndGetCommitsList(
       HoodieWriteConfig writeConfig, boolean includeIncompleteInstants) throws 
IOException {
     metaClient.reloadActiveTimeline();

Reply via email to