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 8108d3b3ed915..96d67eafb6cb8 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 @@ private List getInstantsToArchive() throws IOException { // 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 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 40f3abbc2bc5b..65e08920ae4c5 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 @@ private List getCommitInstantsToArchive() throws IOException { // 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 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 8be69c96feafc..bb0519576b745 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 @@ -295,6 +295,9 @@ public void testArchiveTableWithArchival(boolean enableMetadata) throws Exceptio getAllArchivedCommitInstants(Arrays.asList("00000001", "00000002")), getActiveCommitInstants(Arrays.asList("00000003", "00000004", "00000005", "00000006")), commitsAfterArchival, false); + if (enableMetadata) { + disableMetadataTable(writeConfig); + } } else if (i < 8) { assertEquals(originalCommits, commitsAfterArchival); } else if (i == 8) { @@ -1817,6 +1820,11 @@ private Pair, List> archiveAndGetCommitsList( 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> archiveAndGetCommitsList( HoodieWriteConfig writeConfig, boolean includeIncompleteInstants) throws IOException { metaClient.reloadActiveTimeline();