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();