This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new b2f63c97835 HDDS-15172. Cleanup logging in Iceberg RewriteTablePath
action and add validation tests (#10187)
b2f63c97835 is described below
commit b2f63c97835bc49f95059c202bc02a77f5279263
Author: slfan1989 <[email protected]>
AuthorDate: Mon May 18 19:49:16 2026 +0800
HDDS-15172. Cleanup logging in Iceberg RewriteTablePath action and add
validation tests (#10187)
---
.../ozone/iceberg/RewriteTablePathOzoneAction.java | 5 +-
.../iceberg/TestRewriteTablePathOzoneAction.java | 83 ++++++++++++++++++++++
2 files changed, 87 insertions(+), 1 deletion(-)
diff --git
a/hadoop-ozone/iceberg/src/main/java/org/apache/hadoop/ozone/iceberg/RewriteTablePathOzoneAction.java
b/hadoop-ozone/iceberg/src/main/java/org/apache/hadoop/ozone/iceberg/RewriteTablePathOzoneAction.java
index 2bda160e32e..0327b7a5fd6 100644
---
a/hadoop-ozone/iceberg/src/main/java/org/apache/hadoop/ozone/iceberg/RewriteTablePathOzoneAction.java
+++
b/hadoop-ozone/iceberg/src/main/java/org/apache/hadoop/ozone/iceberg/RewriteTablePathOzoneAction.java
@@ -158,6 +158,9 @@ private Result doExecute() {
}
private void validateInputs() {
+ RewriteTablePathOzoneUtils.checkNonNullNonEmpty(sourcePrefix, "Source
prefix");
+ RewriteTablePathOzoneUtils.checkNonNullNonEmpty(targetPrefix, "Target
prefix");
+
if (sourcePrefix.equals(targetPrefix)) {
throw new IllegalArgumentException(
String.format(
@@ -289,7 +292,7 @@ private Set<Pair<String, String>>
rewriteVersionFile(TableMetadata metadata, Str
Set<Pair<String, String>> result = new HashSet<>();
String stagingPath = RewriteTablePathUtil.stagingPath(versionFilePath,
sourcePrefix, stagingDir);
- System.out.println("Processing version file " + versionFilePath);
+ LOG.debug("Processing version file {}", versionFilePath);
TableMetadata newTableMetadata =
RewriteTablePathUtil.replacePaths(metadata, sourcePrefix, targetPrefix);
TableMetadataParser.overwrite(newTableMetadata,
table.io().newOutputFile(stagingPath));
diff --git
a/hadoop-ozone/iceberg/src/test/java/org/apache/hadoop/ozone/iceberg/TestRewriteTablePathOzoneAction.java
b/hadoop-ozone/iceberg/src/test/java/org/apache/hadoop/ozone/iceberg/TestRewriteTablePathOzoneAction.java
index 405740ab6ee..87c9c665ff8 100644
---
a/hadoop-ozone/iceberg/src/test/java/org/apache/hadoop/ozone/iceberg/TestRewriteTablePathOzoneAction.java
+++
b/hadoop-ozone/iceberg/src/test/java/org/apache/hadoop/ozone/iceberg/TestRewriteTablePathOzoneAction.java
@@ -222,6 +222,89 @@ void tablePathRewriteForStartAndEndVersionProvided()
throws Exception {
}
@Test
+ void executeRejectsMissingLocationPrefix() {
+ NullPointerException exception = assertThrows(NullPointerException.class,
+ () -> new RewriteTablePathOzoneAction(table)
+ .stagingLocation(stagingDir.toString() + "/")
+ .execute());
+
+ assertEquals("Source prefix is null", exception.getMessage());
+ }
+
+ @Test
+ void executeRejectsMissingTargetPrefix() {
+ NullPointerException exception = assertThrows(NullPointerException.class,
+ () -> new RewriteTablePathOzoneAction(table)
+ .rewriteLocationPrefix(sourcePrefix, null));
+
+ assertEquals("Target prefix is null", exception.getMessage());
+ }
+
+ @Test
+ void rewriteLocationPrefixRejectsSameSourceAndTarget() {
+ IllegalArgumentException exception =
assertThrows(IllegalArgumentException.class,
+ () -> new RewriteTablePathOzoneAction(table)
+ .rewriteLocationPrefix(sourcePrefix, sourcePrefix)
+ .execute());
+
+ assertEquals("Source prefix cannot be the same as target prefix (" +
+ sourcePrefix + ")", exception.getMessage());
+ }
+
+ @Test
+ void startVersionRejectsUnknownVersion() {
+ IllegalArgumentException exception =
assertThrows(IllegalArgumentException.class,
+ () -> new RewriteTablePathOzoneAction(table)
+ .rewriteLocationPrefix(sourcePrefix, targetPrefix)
+ .startVersion("missing.metadata.json")
+ .execute());
+
+ assertEquals("Cannot find provided version file missing.metadata.json " +
+ "in metadata log.", exception.getMessage());
+ }
+
+ @Test
+ void startVersionRejectsDeletedVersionFile() {
+ List<String> metadataPaths = metadataLogEntryPaths(table);
+ String existingName = RewriteTablePathUtil.fileName(metadataPaths.get(0));
+ table.io().deleteFile(metadataPaths.get(0));
+
+ IllegalArgumentException exception =
assertThrows(IllegalArgumentException.class,
+ () -> new RewriteTablePathOzoneAction(table)
+ .rewriteLocationPrefix(sourcePrefix, targetPrefix)
+ .startVersion(existingName)
+ .execute());
+
+ assertThat(exception).hasMessageContaining("does not exist");
+ }
+
+ @Test
+ void endVersionRejectsUnknownVersion() {
+ IllegalArgumentException exception =
assertThrows(IllegalArgumentException.class,
+ () -> new RewriteTablePathOzoneAction(table)
+ .rewriteLocationPrefix(sourcePrefix, targetPrefix)
+ .endVersion("missing.metadata.json")
+ .execute());
+
+ assertEquals("Cannot find provided version file missing.metadata.json " +
+ "in metadata log.", exception.getMessage());
+ }
+
+ @Test
+ void endVersionRejectsDeletedVersionFile() {
+ List<String> metadataPaths = metadataLogEntryPaths(table);
+ String existingName = RewriteTablePathUtil.fileName(metadataPaths.get(0));
+ table.io().deleteFile(metadataPaths.get(0));
+
+ IllegalArgumentException exception =
assertThrows(IllegalArgumentException.class,
+ () -> new RewriteTablePathOzoneAction(table)
+ .rewriteLocationPrefix(sourcePrefix, targetPrefix)
+ .endVersion(existingName)
+ .execute());
+
+ assertThat(exception).hasMessageContaining("does not exist");
+ }
+
void defaultStagingDirIsUnderTableMetadataLocation() {
String metadataLocation =
RewriteTablePathOzoneUtils.getMetadataLocation(table);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]