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

jackie 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 0929b4cdd1 Disallow peer download when replication is < 2 (#11469)
0929b4cdd1 is described below

commit 0929b4cdd1b3526824db551b6d7e1e5fe25aee52
Author: Saurabh Dubey <saurabhd...@gmail.com>
AuthorDate: Wed Sep 13 05:14:04 2023 +0530

    Disallow peer download when replication is < 2 (#11469)
---
 .../segment/local/utils/TableConfigUtils.java      |  4 ++++
 .../segment/local/utils/TableConfigUtilsTest.java  | 26 +++++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
index 75a2f23054..7d1b5d6ca3 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
@@ -277,6 +277,10 @@ public final class TableConfigUtils {
         throw new IllegalStateException("Invalid value '" + 
peerSegmentDownloadScheme
             + "' for peerSegmentDownloadScheme. Must be one of http or https");
       }
+
+      if (tableConfig.getReplication() < 2) {
+        throw new IllegalStateException("peerSegmentDownloadScheme can't be 
used when replication is < 2");
+      }
     }
 
     validateRetentionConfig(tableConfig);
diff --git 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java
 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java
index 985c0be825..0ea7acfeb6 100644
--- 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java
+++ 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java
@@ -35,6 +35,7 @@ import org.apache.pinot.spi.config.table.HashFunction;
 import org.apache.pinot.spi.config.table.ReplicaGroupStrategyConfig;
 import org.apache.pinot.spi.config.table.RoutingConfig;
 import org.apache.pinot.spi.config.table.SegmentPartitionConfig;
+import org.apache.pinot.spi.config.table.SegmentsValidationAndRetentionConfig;
 import org.apache.pinot.spi.config.table.StarTreeIndexConfig;
 import org.apache.pinot.spi.config.table.TableConfig;
 import org.apache.pinot.spi.config.table.TableTaskConfig;
@@ -320,8 +321,31 @@ public class TableConfigUtilsTest {
       // expected
     }
 
-    // invalid filter config since Groovy is disabled
+    // Using peer download scheme with replication of 1
     ingestionConfig.setTransformConfigs(null);
+    SegmentsValidationAndRetentionConfig segmentsValidationAndRetentionConfig =
+        new SegmentsValidationAndRetentionConfig();
+    segmentsValidationAndRetentionConfig.setReplication("1");
+    
segmentsValidationAndRetentionConfig.setPeerSegmentDownloadScheme(CommonConstants.HTTP_PROTOCOL);
+    tableConfig.setValidationConfig(segmentsValidationAndRetentionConfig);
+    try {
+      TableConfigUtils.validate(tableConfig, schema);
+      Assert.fail("Should fail when peer download scheme is used with 
replication of 1");
+    } catch (IllegalStateException e) {
+      // expected
+      Assert.assertEquals(e.getMessage(), "peerSegmentDownloadScheme can't be 
used when replication is < 2");
+    }
+
+    segmentsValidationAndRetentionConfig.setReplication("2");
+    tableConfig.setValidationConfig(segmentsValidationAndRetentionConfig);
+    try {
+      TableConfigUtils.validate(tableConfig, schema);
+    } catch (IllegalStateException e) {
+      // expected
+      Assert.fail("Should not fail when peer download scheme is used with 
replication of > 1");
+    }
+
+    // invalid filter config since Groovy is disabled
     ingestionConfig.setFilterConfig(new FilterConfig("Groovy({timestamp > 0}, 
timestamp)"));
     try {
       TableConfigUtils.validate(tableConfig, schema, null, true);


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

Reply via email to