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

xiangfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 112893bd6e Fixing the metadata tar gz file path (#10149)
112893bd6e is described below

commit 112893bd6ee1357d08b9f889535c64a4b654ea1a
Author: Xiang Fu <xiangfu.1...@gmail.com>
AuthorDate: Thu Jan 19 03:48:09 2023 -0800

    Fixing the metadata tar gz file path (#10149)
---
 .../segment/local/utils/SegmentPushUtils.java      | 20 +++++++++++++++--
 .../segment/local/utils/SegmentPushUtilsTest.java  | 25 +++++++++++++++++++---
 2 files changed, 40 insertions(+), 5 deletions(-)

diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/SegmentPushUtils.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/SegmentPushUtils.java
index b2ed31821c..dabee5dcb6 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/SegmentPushUtils.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/SegmentPushUtils.java
@@ -290,8 +290,9 @@ public class SegmentPushUtils implements Serializable {
       // Check if there is a segment metadata tar gz file named 
`segmentName.metadata.tar.gz`, already in the remote
       // directory. This is to avoid generating a new segment metadata tar gz 
file every time we push a segment,
       // which requires downloading the entire segment tar gz file.
-      URI metadataTarGzFilePath = URI.create(
-          new File(tarFilePath).getParentFile() + File.separator + segmentName 
+ Constants.METADATA_TAR_GZ_FILE_EXT);
+
+      URI metadataTarGzFilePath = generateSegmentMetadataURI(tarFilePath, 
segmentName);
+      LOGGER.info("Checking if metadata tar gz file {} exists", 
metadataTarGzFilePath);
       if (spec.getPushJobSpec().isPreferMetadataTarGz() && 
fileSystem.exists(metadataTarGzFilePath)) {
         segmentMetadataFile = new File(FileUtils.getTempDirectory(),
             "segmentMetadata-" + UUID.randomUUID() + 
TarGzCompressionUtils.TAR_GZ_FILE_EXTENSION);
@@ -442,4 +443,19 @@ public class SegmentPushUtils implements Serializable {
       FileUtils.deleteQuietly(segmentMetadataDir);
     }
   }
+
+  public static URI generateSegmentMetadataURI(String segmentTarPath, String 
segmentName)
+      throws URISyntaxException {
+    URI segmentTarURI = URI.create(segmentTarPath);
+    URI metadataTarGzFilePath = new URI(
+        segmentTarURI.getScheme(),
+        segmentTarURI.getUserInfo(),
+        segmentTarURI.getHost(),
+        segmentTarURI.getPort(),
+        new File(segmentTarURI.getPath()).getParentFile() + File.separator + 
segmentName
+            + Constants.METADATA_TAR_GZ_FILE_EXT,
+        segmentTarURI.getQuery(),
+        segmentTarURI.getFragment());
+    return metadataTarGzFilePath;
+  }
 }
diff --git 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/SegmentPushUtilsTest.java
 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/SegmentPushUtilsTest.java
index dd3a09a7ed..20121a14b1 100644
--- 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/SegmentPushUtilsTest.java
+++ 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/SegmentPushUtilsTest.java
@@ -20,21 +20,24 @@ package org.apache.pinot.segment.local.utils;
 
 import java.io.IOException;
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.nio.file.Files;
 import java.util.Map;
 import org.apache.pinot.spi.ingestion.batch.spec.PushJobSpec;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
 
 
 public class SegmentPushUtilsTest {
 
   @Test
-  public void testGetSegmentUriToTarPathMap() throws IOException {
+  public void testGetSegmentUriToTarPathMap()
+      throws IOException {
     URI outputDirURI = Files.createTempDirectory("test").toUri();
 
-    String[] segmentFiles = new String[] {
+    String[] segmentFiles = new String[]{
         outputDirURI.resolve("segment.tar.gz").toString(),
         outputDirURI.resolve("stats_202201.tar.gz").toString(),
         outputDirURI.resolve("/2022/segment.tar.gz").toString(),
@@ -61,4 +64,20 @@ public class SegmentPushUtilsTest {
     assertEquals(result.get(segmentFiles[1]), segmentFiles[1]);
     assertEquals(result.get(segmentFiles[3]), segmentFiles[3]);
   }
+
+  @Test
+  public void testGenerateSegmentMetadataURI()
+      throws URISyntaxException {
+    assertEquals(
+        
SegmentPushUtils.generateSegmentMetadataURI("/a/b/c/my-segment.tar.gz", 
"my-segment"),
+        URI.create("/a/b/c/my-segment.metadata.tar.gz"));
+
+    assertEquals(
+        
SegmentPushUtils.generateSegmentMetadataURI("s3://a/b/c/my-segment.tar.gz", 
"my-segment"),
+        URI.create("s3://a/b/c/my-segment.metadata.tar.gz"));
+
+    assertEquals(
+        
SegmentPushUtils.generateSegmentMetadataURI("hdfs://a/b/c/my-segment.tar.gz", 
"my-segment"),
+        URI.create("hdfs://a/b/c/my-segment.metadata.tar.gz"));
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to