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]

Reply via email to