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

Jackie-Jiang 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 dd28703d459 Replace segmentDirectoryConfigs map with ReadMode in 
SegmentDirectoryLoaderContext (#18806)
dd28703d459 is described below

commit dd28703d4591e291ded06507633f312b96052839
Author: Xiaotian (Jackie) Jiang <[email protected]>
AuthorDate: Thu Jun 18 15:16:34 2026 -0700

    Replace segmentDirectoryConfigs map with ReadMode in 
SegmentDirectoryLoaderContext (#18806)
---
 .../core/data/manager/BaseTableDataManager.java    | 25 ++++++------
 .../pinot/core/minion/SegmentPurgerTest.java       |  9 +----
 .../pinot/perf/BenchmarkOfflineIndexReader.java    | 11 +----
 .../refreshsegment/RefreshSegmentTaskExecutor.java | 18 ++++-----
 .../immutable/ImmutableSegmentLoader.java          | 47 ++++++++++------------
 .../loader/DefaultSegmentDirectoryLoader.java      |  7 +---
 .../loader/TierBasedSegmentDirectoryLoader.java    |  5 +--
 .../segment/creator/impl/BaseSegmentCreator.java   | 34 +++++-----------
 .../converter/SegmentV1V2ToV3FormatConverter.java  | 16 ++------
 .../segment/index/loader/IndexLoadingConfig.java   |  7 ----
 .../segment/store/SegmentLocalFSDirectory.java     | 42 +++++++------------
 .../text/LuceneTextIndexConfigReloadTest.java      | 15 +++----
 .../spi/loader/SegmentDirectoryLoaderContext.java  | 37 +++++++++--------
 .../server/predownload/PredownloadSegmentInfo.java | 18 +++++----
 14 files changed, 109 insertions(+), 182 deletions(-)

diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/data/manager/BaseTableDataManager.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/data/manager/BaseTableDataManager.java
index 5667b5d938d..a095d8e2cf1 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/data/manager/BaseTableDataManager.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/data/manager/BaseTableDataManager.java
@@ -1931,19 +1931,18 @@ public abstract class BaseTableDataManager implements 
TableDataManager {
   protected SegmentDirectory initSegmentDirectory(String segmentName, String 
segmentCrc,
       IndexLoadingConfig indexLoadingConfig, @Nullable SegmentZKMetadata 
zkMetadata)
       throws Exception {
-    Map<String, String> segmentCustomConfigs = zkMetadata != null ? 
zkMetadata.getCustomMap() : new HashMap<>();
-    SegmentDirectoryLoaderContext loaderContext =
-        new 
SegmentDirectoryLoaderContext.Builder().setTableConfig(indexLoadingConfig.getTableConfig())
-            .setSchema(indexLoadingConfig.getSchema())
-            .setInstanceId(indexLoadingConfig.getInstanceId())
-            .setTableDataDir(indexLoadingConfig.getTableDataDir())
-            .setSegmentName(segmentName)
-            .setSegmentCrc(segmentCrc)
-            .setSegmentTier(indexLoadingConfig.getSegmentTier())
-            
.setInstanceTierConfigs(indexLoadingConfig.getInstanceTierConfigs())
-            
.setSegmentDirectoryConfigs(indexLoadingConfig.getSegmentDirectoryConfigs())
-            .setSegmentCustomConfigs(segmentCustomConfigs)
-            .build();
+    SegmentDirectoryLoaderContext loaderContext = new 
SegmentDirectoryLoaderContext.Builder()
+        .setReadMode(indexLoadingConfig.getReadMode())
+        .setTableConfig(indexLoadingConfig.getTableConfig())
+        .setSchema(indexLoadingConfig.getSchema())
+        .setInstanceId(indexLoadingConfig.getInstanceId())
+        .setTableDataDir(indexLoadingConfig.getTableDataDir())
+        .setSegmentName(segmentName)
+        .setSegmentCrc(segmentCrc)
+        .setSegmentTier(indexLoadingConfig.getSegmentTier())
+        .setInstanceTierConfigs(indexLoadingConfig.getInstanceTierConfigs())
+        .setSegmentCustomConfigs(zkMetadata != null ? 
zkMetadata.getCustomMap() : Map.of())
+        .build();
     SegmentDirectoryLoader segmentDirectoryLoader =
         
SegmentDirectoryLoaderRegistry.getSegmentDirectoryLoader(indexLoadingConfig.getSegmentDirectoryLoader());
     File indexDir =
diff --git 
a/pinot-core/src/test/java/org/apache/pinot/core/minion/SegmentPurgerTest.java 
b/pinot-core/src/test/java/org/apache/pinot/core/minion/SegmentPurgerTest.java
index 36d38e828ca..c16bccf0ecf 100644
--- 
a/pinot-core/src/test/java/org/apache/pinot/core/minion/SegmentPurgerTest.java
+++ 
b/pinot-core/src/test/java/org/apache/pinot/core/minion/SegmentPurgerTest.java
@@ -20,13 +20,10 @@ package org.apache.pinot.core.minion;
 
 import java.io.File;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.Random;
 import org.apache.commons.io.FileUtils;
 import 
org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl;
-import org.apache.pinot.segment.local.segment.index.loader.IndexLoadingConfig;
 import org.apache.pinot.segment.local.segment.readers.GenericRowRecordReader;
 import org.apache.pinot.segment.local.segment.readers.PinotSegmentRecordReader;
 import org.apache.pinot.segment.spi.creator.SegmentGeneratorConfig;
@@ -42,8 +39,6 @@ import org.apache.pinot.spi.config.table.TableType;
 import org.apache.pinot.spi.data.FieldSpec;
 import org.apache.pinot.spi.data.Schema;
 import org.apache.pinot.spi.data.readers.GenericRow;
-import org.apache.pinot.spi.env.PinotConfiguration;
-import org.apache.pinot.spi.utils.ReadMode;
 import org.apache.pinot.spi.utils.builder.TableConfigBuilder;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
@@ -166,11 +161,9 @@ public class SegmentPurgerTest {
     }
 
     // Check inverted index
-    Map<String, Object> props = new HashMap<>();
-    props.put(IndexLoadingConfig.READ_MODE_KEY, ReadMode.mmap.toString());
     try (SegmentDirectory segmentDirectory = 
SegmentDirectoryLoaderRegistry.getDefaultSegmentDirectoryLoader()
         .load(purgedIndexDir.toURI(), new 
SegmentDirectoryLoaderContext.Builder().setTableConfig(_tableConfig)
-            
.setSegmentName(purgedSegmentMetadata.getName()).setSegmentDirectoryConfigs(new 
PinotConfiguration(props))
+            .setSegmentName(purgedSegmentMetadata.getName())
             .build()); SegmentDirectory.Reader reader = 
segmentDirectory.createReader()) {
       assertTrue(reader.hasIndexFor(D1, StandardIndexes.inverted()));
       assertFalse(reader.hasIndexFor(D2, StandardIndexes.inverted()));
diff --git 
a/pinot-perf/src/main/java/org/apache/pinot/perf/BenchmarkOfflineIndexReader.java
 
b/pinot-perf/src/main/java/org/apache/pinot/perf/BenchmarkOfflineIndexReader.java
index e4550408763..e683f5142ef 100644
--- 
a/pinot-perf/src/main/java/org/apache/pinot/perf/BenchmarkOfflineIndexReader.java
+++ 
b/pinot-perf/src/main/java/org/apache/pinot/perf/BenchmarkOfflineIndexReader.java
@@ -22,8 +22,6 @@ import com.google.common.base.Preconditions;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
 import org.apache.commons.io.FileUtils;
@@ -31,7 +29,6 @@ import org.apache.pinot.common.utils.TarCompressionUtils;
 import org.apache.pinot.integration.tests.ClusterTest;
 import org.apache.pinot.segment.local.segment.creator.SegmentTestUtils;
 import 
org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl;
-import org.apache.pinot.segment.local.segment.index.loader.IndexLoadingConfig;
 import org.apache.pinot.segment.local.segment.index.readers.DoubleDictionary;
 import org.apache.pinot.segment.local.segment.index.readers.FloatDictionary;
 import org.apache.pinot.segment.local.segment.index.readers.IntDictionary;
@@ -48,8 +45,6 @@ import 
org.apache.pinot.segment.spi.index.reader.ForwardIndexReaderContext;
 import org.apache.pinot.segment.spi.loader.SegmentDirectoryLoaderContext;
 import org.apache.pinot.segment.spi.loader.SegmentDirectoryLoaderRegistry;
 import org.apache.pinot.segment.spi.store.SegmentDirectory;
-import org.apache.pinot.spi.env.PinotConfiguration;
-import org.apache.pinot.spi.utils.ReadMode;
 import org.apache.pinot.util.TestUtils;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -119,12 +114,10 @@ public class BenchmarkOfflineIndexReader {
 
     File indexDir = new File(dataDir, TABLE_NAME);
     SegmentMetadataImpl segmentMetadata = new SegmentMetadataImpl(indexDir);
-    Map<String, Object> props = new HashMap<>();
-    props.put(IndexLoadingConfig.READ_MODE_KEY, ReadMode.mmap.toString());
 
     SegmentDirectory segmentDirectory = 
SegmentDirectoryLoaderRegistry.getDefaultSegmentDirectoryLoader()
-        .load(indexDir.toURI(), new 
SegmentDirectoryLoaderContext.Builder().setSegmentName(segmentMetadata.getName())
-            .setSegmentDirectoryConfigs(new 
PinotConfiguration(props)).build());
+        .load(indexDir.toURI(),
+            new 
SegmentDirectoryLoaderContext.Builder().setSegmentName(segmentMetadata.getName()).build());
     SegmentDirectory.Reader segmentReader = segmentDirectory.createReader();
 
     // Forward index
diff --git 
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/refreshsegment/RefreshSegmentTaskExecutor.java
 
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/refreshsegment/RefreshSegmentTaskExecutor.java
index 524a63fa143..5cfc7dee942 100644
--- 
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/refreshsegment/RefreshSegmentTaskExecutor.java
+++ 
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/refreshsegment/RefreshSegmentTaskExecutor.java
@@ -43,7 +43,6 @@ import org.apache.pinot.spi.config.instance.InstanceType;
 import org.apache.pinot.spi.config.table.TableConfig;
 import org.apache.pinot.spi.data.FieldSpec;
 import org.apache.pinot.spi.data.Schema;
-import org.apache.pinot.spi.env.PinotConfiguration;
 import org.apache.pinot.spi.utils.Obfuscator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -83,15 +82,14 @@ public class RefreshSegmentTaskExecutor extends 
BaseSingleSegmentConversionExecu
 
     IndexLoadingConfig indexLoadingConfig = new 
IndexLoadingConfig(tableConfig, schema);
     SegmentMetadataImpl segmentMetadata = new SegmentMetadataImpl(indexDir);
-    PinotConfiguration segmentDirectoryConfigs = 
indexLoadingConfig.getSegmentDirectoryConfigs();
-    SegmentDirectoryLoaderContext segmentLoaderContext =
-        new 
SegmentDirectoryLoaderContext.Builder().setTableConfig(indexLoadingConfig.getTableConfig())
-            .setSchema(schema)
-            .setInstanceId(indexLoadingConfig.getInstanceId())
-            .setSegmentName(segmentMetadata.getName())
-            .setSegmentCrc(segmentMetadata.getCrc())
-            .setSegmentDirectoryConfigs(segmentDirectoryConfigs)
-            .build();
+    SegmentDirectoryLoaderContext segmentLoaderContext = new 
SegmentDirectoryLoaderContext.Builder()
+        .setReadMode(indexLoadingConfig.getReadMode())
+        .setTableConfig(indexLoadingConfig.getTableConfig())
+        .setSchema(schema)
+        .setInstanceId(indexLoadingConfig.getInstanceId())
+        .setSegmentName(segmentMetadata.getName())
+        .setSegmentCrc(segmentMetadata.getCrc())
+        .build();
     SegmentDirectory segmentDirectory =
         
SegmentDirectoryLoaderRegistry.getDefaultSegmentDirectoryLoader().load(indexDir.toURI(),
 segmentLoaderContext);
 
diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/indexsegment/immutable/ImmutableSegmentLoader.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/indexsegment/immutable/ImmutableSegmentLoader.java
index 20c16ad962d..0e16f2f4925 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/indexsegment/immutable/ImmutableSegmentLoader.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/indexsegment/immutable/ImmutableSegmentLoader.java
@@ -21,7 +21,6 @@ package org.apache.pinot.segment.local.indexsegment.immutable;
 import com.google.common.base.Preconditions;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import java.io.File;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -50,7 +49,6 @@ import org.apache.pinot.segment.spi.store.SegmentDirectory;
 import org.apache.pinot.segment.spi.store.SegmentDirectoryPaths;
 import org.apache.pinot.spi.data.FieldSpec;
 import org.apache.pinot.spi.data.Schema;
-import org.apache.pinot.spi.env.PinotConfiguration;
 import org.apache.pinot.spi.utils.ReadMode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -143,19 +141,18 @@ public class ImmutableSegmentLoader {
       preprocess(indexDir, indexLoadingConfig, segmentOperationsThrottlerSet, 
zkMetadata);
     }
     String segmentName = segmentMetadata.getName();
-    Map<String, String> segmentCustomConfigs = zkMetadata != null ? 
zkMetadata.getCustomMap() : new HashMap<>();
-    SegmentDirectoryLoaderContext segmentLoaderContext =
-        new 
SegmentDirectoryLoaderContext.Builder().setTableConfig(indexLoadingConfig.getTableConfig())
-            .setSchema(indexLoadingConfig.getSchema())
-            .setInstanceId(indexLoadingConfig.getInstanceId())
-            .setTableDataDir(indexLoadingConfig.getTableDataDir())
-            .setSegmentName(segmentName)
-            .setSegmentCrc(segmentMetadata.getCrc())
-            .setSegmentTier(indexLoadingConfig.getSegmentTier())
-            
.setInstanceTierConfigs(indexLoadingConfig.getInstanceTierConfigs())
-            
.setSegmentDirectoryConfigs(indexLoadingConfig.getSegmentDirectoryConfigs())
-            .setSegmentCustomConfigs(segmentCustomConfigs)
-            .build();
+    SegmentDirectoryLoaderContext segmentLoaderContext = new 
SegmentDirectoryLoaderContext.Builder()
+        .setReadMode(indexLoadingConfig.getReadMode())
+        .setTableConfig(indexLoadingConfig.getTableConfig())
+        .setSchema(indexLoadingConfig.getSchema())
+        .setInstanceId(indexLoadingConfig.getInstanceId())
+        .setTableDataDir(indexLoadingConfig.getTableDataDir())
+        .setSegmentName(segmentName)
+        .setSegmentCrc(segmentMetadata.getCrc())
+        .setSegmentTier(indexLoadingConfig.getSegmentTier())
+        .setInstanceTierConfigs(indexLoadingConfig.getInstanceTierConfigs())
+        .setSegmentCustomConfigs(zkMetadata != null ? 
zkMetadata.getCustomMap() : Map.of())
+        .build();
     SegmentDirectoryLoader segmentLoader =
         
SegmentDirectoryLoaderRegistry.getSegmentDirectoryLoader(indexLoadingConfig.getSegmentDirectoryLoader());
     SegmentDirectory segmentDirectory = segmentLoader.load(indexDir.toURI(), 
segmentLoaderContext);
@@ -325,17 +322,15 @@ public class ImmutableSegmentLoader {
       IndexLoadingConfig indexLoadingConfig, @Nullable 
SegmentOperationsThrottlerSet segmentOperationsThrottlerSet,
       SegmentZKMetadata zkMetadata)
       throws Exception {
-    PinotConfiguration segmentDirectoryConfigs = 
indexLoadingConfig.getSegmentDirectoryConfigs();
-    Map<String, String> segmentCustomConfigs = zkMetadata != null ? 
zkMetadata.getCustomMap() : new HashMap<>();
-    SegmentDirectoryLoaderContext segmentLoaderContext =
-        new 
SegmentDirectoryLoaderContext.Builder().setTableConfig(indexLoadingConfig.getTableConfig())
-            .setSchema(indexLoadingConfig.getSchema())
-            .setInstanceId(indexLoadingConfig.getInstanceId())
-            .setSegmentName(segmentName)
-            .setSegmentCrc(segmentCrc)
-            .setSegmentDirectoryConfigs(segmentDirectoryConfigs)
-            .setSegmentCustomConfigs(segmentCustomConfigs)
-            .build();
+    SegmentDirectoryLoaderContext segmentLoaderContext = new 
SegmentDirectoryLoaderContext.Builder()
+        .setReadMode(indexLoadingConfig.getReadMode())
+        .setTableConfig(indexLoadingConfig.getTableConfig())
+        .setSchema(indexLoadingConfig.getSchema())
+        .setInstanceId(indexLoadingConfig.getInstanceId())
+        .setSegmentName(segmentName)
+        .setSegmentCrc(segmentCrc)
+        .setSegmentCustomConfigs(zkMetadata != null ? 
zkMetadata.getCustomMap() : Map.of())
+        .build();
     SegmentDirectory segmentDirectory =
         
SegmentDirectoryLoaderRegistry.getDefaultSegmentDirectoryLoader().load(indexDir.toURI(),
 segmentLoaderContext);
     try (SegmentPreProcessor preProcessor = new 
SegmentPreProcessor(segmentDirectory, indexLoadingConfig)) {
diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/loader/DefaultSegmentDirectoryLoader.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/loader/DefaultSegmentDirectoryLoader.java
index 17f8cb6d92d..9998163b96e 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/loader/DefaultSegmentDirectoryLoader.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/loader/DefaultSegmentDirectoryLoader.java
@@ -21,14 +21,11 @@ package org.apache.pinot.segment.local.loader;
 import java.io.File;
 import java.net.URI;
 import org.apache.commons.io.FileUtils;
-import org.apache.pinot.segment.local.segment.index.loader.IndexLoadingConfig;
 import org.apache.pinot.segment.local.segment.store.SegmentLocalFSDirectory;
 import org.apache.pinot.segment.spi.loader.SegmentDirectoryLoader;
 import org.apache.pinot.segment.spi.loader.SegmentDirectoryLoaderContext;
 import org.apache.pinot.segment.spi.loader.SegmentLoader;
 import org.apache.pinot.segment.spi.store.SegmentDirectory;
-import org.apache.pinot.spi.env.PinotConfiguration;
-import org.apache.pinot.spi.utils.ReadMode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -50,13 +47,11 @@ public class DefaultSegmentDirectoryLoader implements 
SegmentDirectoryLoader {
   @Override
   public SegmentDirectory load(URI indexDir, SegmentDirectoryLoaderContext 
segmentLoaderContext)
       throws Exception {
-    PinotConfiguration segmentDirectoryConfigs = 
segmentLoaderContext.getSegmentDirectoryConfigs();
     File directory = new File(indexDir);
     if (!directory.exists()) {
       return new SegmentLocalFSDirectory(directory);
     }
-    return new SegmentLocalFSDirectory(directory, segmentLoaderContext,
-        
ReadMode.valueOf(segmentDirectoryConfigs.getProperty(IndexLoadingConfig.READ_MODE_KEY)));
+    return new SegmentLocalFSDirectory(directory, 
segmentLoaderContext.getReadMode());
   }
 
   @Override
diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/loader/TierBasedSegmentDirectoryLoader.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/loader/TierBasedSegmentDirectoryLoader.java
index 397aa79c567..d37a9501eca 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/loader/TierBasedSegmentDirectoryLoader.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/loader/TierBasedSegmentDirectoryLoader.java
@@ -28,14 +28,12 @@ import java.nio.charset.StandardCharsets;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pinot.common.utils.config.TierConfigUtils;
-import org.apache.pinot.segment.local.segment.index.loader.IndexLoadingConfig;
 import org.apache.pinot.segment.local.segment.store.SegmentLocalFSDirectory;
 import org.apache.pinot.segment.spi.loader.SegmentDirectoryLoader;
 import org.apache.pinot.segment.spi.loader.SegmentDirectoryLoaderContext;
 import org.apache.pinot.segment.spi.loader.SegmentLoader;
 import org.apache.pinot.segment.spi.store.SegmentDirectory;
 import org.apache.pinot.spi.config.table.TableConfig;
-import org.apache.pinot.spi.utils.ReadMode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -103,8 +101,7 @@ public class TierBasedSegmentDirectoryLoader implements 
SegmentDirectoryLoader {
     if (!destDir.exists()) {
       segmentDirectory = new SegmentLocalFSDirectory(destDir);
     } else {
-      segmentDirectory = new SegmentLocalFSDirectory(destDir, ReadMode.valueOf(
-          
segmentLoaderContext.getSegmentDirectoryConfigs().getProperty(IndexLoadingConfig.READ_MODE_KEY)));
+      segmentDirectory = new SegmentLocalFSDirectory(destDir, 
segmentLoaderContext.getReadMode());
     }
     LOGGER.info("Created segmentDirectory object for segment: {} with dataDir: 
{} on targetTier: {}", segmentName,
         destDir, targetTierName);
diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/creator/impl/BaseSegmentCreator.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/creator/impl/BaseSegmentCreator.java
index 3938a6437b3..a978221ef69 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/creator/impl/BaseSegmentCreator.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/creator/impl/BaseSegmentCreator.java
@@ -27,7 +27,6 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -89,8 +88,6 @@ import org.apache.pinot.spi.data.FieldSpec.FieldType;
 import org.apache.pinot.spi.data.FieldSpec.MaxLengthExceedStrategy;
 import org.apache.pinot.spi.data.Schema;
 import org.apache.pinot.spi.env.CommonsConfigurationUtils;
-import org.apache.pinot.spi.env.PinotConfiguration;
-import org.apache.pinot.spi.utils.ReadMode;
 import org.apache.pinot.spi.utils.TimeUtils;
 import org.joda.time.DateTimeZone;
 import org.joda.time.Interval;
@@ -901,18 +898,13 @@ public abstract class BaseSegmentCreator implements 
SegmentCreator {
   private void buildMultiColumnTextIndex(File segmentOutputDir)
       throws Exception {
     if (_config.getMultiColumnTextIndexConfig() != null) {
-      PinotConfiguration segmentDirectoryConfigs =
-          new PinotConfiguration(Map.of(IndexLoadingConfig.READ_MODE_KEY, 
ReadMode.mmap));
-
       TableConfig tableConfig = _config.getTableConfig();
       Schema schema = _config.getSchema();
-      SegmentDirectoryLoaderContext segmentLoaderContext =
-          new SegmentDirectoryLoaderContext.Builder()
-              .setTableConfig(tableConfig)
-              .setSchema(schema)
-              .setSegmentName(_segmentName)
-              .setSegmentDirectoryConfigs(segmentDirectoryConfigs)
-              .build();
+      SegmentDirectoryLoaderContext segmentLoaderContext = new 
SegmentDirectoryLoaderContext.Builder()
+          .setTableConfig(tableConfig)
+          .setSchema(schema)
+          .setSegmentName(_segmentName)
+          .build();
 
       IndexLoadingConfig indexLoadingConfig = new IndexLoadingConfig(null, 
tableConfig, schema);
 
@@ -938,19 +930,13 @@ public abstract class BaseSegmentCreator implements 
SegmentCreator {
 
     if (!postSegCreationIndexes.isEmpty()) {
       // Build other indexes
-      Map<String, Object> props = new HashMap<>();
-      props.put(IndexLoadingConfig.READ_MODE_KEY, ReadMode.mmap);
-      PinotConfiguration segmentDirectoryConfigs = new 
PinotConfiguration(props);
-
       TableConfig tableConfig = _config.getTableConfig();
       Schema schema = _config.getSchema();
-      SegmentDirectoryLoaderContext segmentLoaderContext =
-          new SegmentDirectoryLoaderContext.Builder()
-              .setTableConfig(tableConfig)
-              .setSchema(schema)
-              .setSegmentName(_segmentName)
-              .setSegmentDirectoryConfigs(segmentDirectoryConfigs)
-              .build();
+      SegmentDirectoryLoaderContext segmentLoaderContext = new 
SegmentDirectoryLoaderContext.Builder()
+          .setTableConfig(tableConfig)
+          .setSchema(schema)
+          .setSegmentName(_segmentName)
+          .build();
 
       IndexLoadingConfig indexLoadingConfig = new IndexLoadingConfig(null, 
tableConfig, schema);
 
diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/converter/SegmentV1V2ToV3FormatConverter.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/converter/SegmentV1V2ToV3FormatConverter.java
index c23b996c778..597f7d947e0 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/converter/SegmentV1V2ToV3FormatConverter.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/converter/SegmentV1V2ToV3FormatConverter.java
@@ -26,12 +26,9 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.attribute.PosixFilePermission;
 import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.commons.configuration2.PropertiesConfiguration;
 import org.apache.commons.configuration2.ex.ConfigurationException;
 import org.apache.commons.io.FileUtils;
-import org.apache.pinot.segment.local.segment.index.loader.IndexLoadingConfig;
 import org.apache.pinot.segment.local.segment.store.TextIndexUtils;
 import org.apache.pinot.segment.spi.V1Constants;
 import org.apache.pinot.segment.spi.converter.SegmentFormatConverter;
@@ -47,8 +44,6 @@ import org.apache.pinot.segment.spi.memory.PinotDataBuffer;
 import org.apache.pinot.segment.spi.store.SegmentDirectory;
 import org.apache.pinot.segment.spi.store.SegmentDirectoryPaths;
 import org.apache.pinot.spi.env.CommonsConfigurationUtils;
-import org.apache.pinot.spi.env.PinotConfiguration;
-import org.apache.pinot.spi.utils.ReadMode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -142,15 +137,12 @@ public class SegmentV1V2ToV3FormatConverter implements 
SegmentFormatConverter {
 
   private void copyIndexData(File v2Directory, SegmentMetadataImpl v2Metadata, 
File v3Directory)
       throws Exception {
-    Map<String, Object> props = new HashMap<>();
-    props.put(IndexLoadingConfig.READ_MODE_KEY, ReadMode.mmap.toString());
-    PinotConfiguration configuration = new PinotConfiguration(props);
     try (SegmentDirectory v2Segment = 
SegmentDirectoryLoaderRegistry.getDefaultSegmentDirectoryLoader()
-        .load(v2Directory.toURI(), new 
SegmentDirectoryLoaderContext.Builder().setSegmentName(v2Metadata.getName())
-            .setSegmentDirectoryConfigs(configuration).build());
+        .load(v2Directory.toURI(),
+            new 
SegmentDirectoryLoaderContext.Builder().setSegmentName(v2Metadata.getName()).build());
         SegmentDirectory v3Segment = 
SegmentDirectoryLoaderRegistry.getDefaultSegmentDirectoryLoader()
-            .load(v3Directory.toURI(), new 
SegmentDirectoryLoaderContext.Builder().setSegmentName(v2Metadata.getName())
-                .setSegmentDirectoryConfigs(configuration).build())) {
+            .load(v3Directory.toURI(),
+                new 
SegmentDirectoryLoaderContext.Builder().setSegmentName(v2Metadata.getName()).build()))
 {
       try (SegmentDirectory.Reader v2DataReader = v2Segment.createReader();
           SegmentDirectory.Writer v3DataWriter = v3Segment.createWriter()) {
         for (String column : v2Metadata.getAllColumns()) {
diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/IndexLoadingConfig.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/IndexLoadingConfig.java
index a2565f09ddc..1a1a64f75d9 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/IndexLoadingConfig.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/IndexLoadingConfig.java
@@ -42,7 +42,6 @@ import org.apache.pinot.spi.config.table.TableConfig;
 import org.apache.pinot.spi.data.DimensionFieldSpec;
 import org.apache.pinot.spi.data.FieldSpec;
 import org.apache.pinot.spi.data.Schema;
-import org.apache.pinot.spi.env.PinotConfiguration;
 import org.apache.pinot.spi.utils.ReadMode;
 import org.apache.pinot.spi.utils.TimestampIndexUtils;
 
@@ -315,12 +314,6 @@ public class IndexLoadingConfig {
         : SegmentDirectoryLoaderRegistry.DEFAULT_SEGMENT_DIRECTORY_LOADER_NAME;
   }
 
-  public PinotConfiguration getSegmentDirectoryConfigs() {
-    Map<String, Object> props = new HashMap<>();
-    props.put(READ_MODE_KEY, _readMode);
-    return new PinotConfiguration(props);
-  }
-
   public String getInstanceId() {
     return _instanceId;
   }
diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/store/SegmentLocalFSDirectory.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/store/SegmentLocalFSDirectory.java
index a68271e34c9..54f7207ce9e 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/store/SegmentLocalFSDirectory.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/store/SegmentLocalFSDirectory.java
@@ -61,9 +61,9 @@ public class SegmentLocalFSDirectory extends SegmentDirectory 
{
 
   private final File _indexDir;
   private final File _segmentDirectory;
-  private final SegmentLock _segmentLock;
   private final ReadMode _readMode;
   private final SegmentDirectoryLoaderContext _segmentDirectoryLoaderContext;
+  private final SegmentLock _segmentLock = new SegmentLock();
   private SegmentMetadataImpl _segmentMetadata;
   private ColumnIndexDirectory _columnIndexDirectory;
   private StarTreeIndexReader _starTreeIndexReader;
@@ -72,45 +72,33 @@ public class SegmentLocalFSDirectory extends 
SegmentDirectory {
 
   // Create an empty SegmentLocalFSDirectory object mainly used to
   // prepare env for subsequent processing on the segment.
-  public SegmentLocalFSDirectory(File directory) {
-    _indexDir = directory;
+  public SegmentLocalFSDirectory(File indexDir) {
+    _indexDir = indexDir;
     _segmentDirectory = null;
-    _segmentLock = new SegmentLock();
     _readMode = null;
     _segmentDirectoryLoaderContext = null;
   }
 
-  public SegmentLocalFSDirectory(File directory, ReadMode readMode)
+  public SegmentLocalFSDirectory(File indexDir, ReadMode readMode)
       throws IOException, ConfigurationException {
-    this(directory, new SegmentMetadataImpl(directory), null, readMode);
+    this(indexDir, new SegmentMetadataImpl(indexDir), readMode, null);
   }
 
-  public SegmentLocalFSDirectory(File directory, @Nullable 
SegmentDirectoryLoaderContext segmentDirectoryLoaderContext,
-      ReadMode readMode)
-      throws IOException, ConfigurationException {
-    this(directory, new SegmentMetadataImpl(directory), 
segmentDirectoryLoaderContext, readMode);
-  }
-
-  public SegmentLocalFSDirectory(File directory, SegmentMetadataImpl metadata, 
ReadMode readMode)
+  @VisibleForTesting
+  public SegmentLocalFSDirectory(File indexDir, SegmentMetadataImpl metadata, 
ReadMode readMode)
       throws IOException, ConfigurationException {
-    this(directory, metadata, null, readMode);
+    this(indexDir, metadata, readMode, null);
   }
 
-  @VisibleForTesting
-  public SegmentLocalFSDirectory(File directoryFile, SegmentMetadataImpl 
metadata,
-      @Nullable SegmentDirectoryLoaderContext segmentDirectoryLoaderContext, 
ReadMode readMode) {
-    _segmentDirectoryLoaderContext = segmentDirectoryLoaderContext;
-
-    Preconditions.checkNotNull(directoryFile);
-    Preconditions.checkNotNull(metadata);
-
-    _indexDir = directoryFile;
-    _segmentDirectory = getSegmentPath(directoryFile, metadata.getVersion());
-    Preconditions.checkState(_segmentDirectory.exists(), "Segment directory: " 
+ directoryFile + " must exist");
-
-    _segmentLock = new SegmentLock();
+  public SegmentLocalFSDirectory(File indexDir, SegmentMetadataImpl metadata, 
ReadMode readMode,
+      @Nullable SegmentDirectoryLoaderContext segmentDirectoryLoaderContext) {
+    _indexDir = indexDir;
+    _segmentDirectory = getSegmentPath(indexDir, metadata.getVersion());
+    Preconditions.checkState(_segmentDirectory.exists(), "Segment directory: " 
+ indexDir + " must exist");
     _segmentMetadata = metadata;
     _readMode = readMode;
+    _segmentDirectoryLoaderContext = segmentDirectoryLoaderContext;
+
     try {
       load();
     } catch (IOException | ConfigurationException e) {
diff --git 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/text/LuceneTextIndexConfigReloadTest.java
 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/text/LuceneTextIndexConfigReloadTest.java
index 547d5d4a885..2ce227094f6 100644
--- 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/text/LuceneTextIndexConfigReloadTest.java
+++ 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/text/LuceneTextIndexConfigReloadTest.java
@@ -23,7 +23,6 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.io.FileUtils;
@@ -48,8 +47,6 @@ import org.apache.pinot.spi.data.FieldSpec;
 import org.apache.pinot.spi.data.Schema;
 import org.apache.pinot.spi.data.readers.GenericRow;
 import org.apache.pinot.spi.data.readers.RecordReader;
-import org.apache.pinot.spi.env.PinotConfiguration;
-import org.apache.pinot.spi.utils.ReadMode;
 import org.apache.pinot.spi.utils.builder.TableConfigBuilder;
 import org.roaringbitmap.buffer.MutableRoaringBitmap;
 import org.slf4j.Logger;
@@ -215,13 +212,11 @@ public class LuceneTextIndexConfigReloadTest {
    */
   private boolean checkNeedUpdateIndices(File segmentFile, TableConfig 
tableConfig, Schema schema)
       throws Exception {
-    Map<String, Object> props = new HashMap<>();
-    props.put(IndexLoadingConfig.READ_MODE_KEY, ReadMode.mmap);
-    PinotConfiguration segmentDirectoryConfigs = new PinotConfiguration(props);
-
-    SegmentDirectoryLoaderContext segmentLoaderContext =
-        new 
SegmentDirectoryLoaderContext.Builder().setTableConfig(tableConfig).setSchema(schema)
-            
.setSegmentName(segmentFile.getName()).setSegmentDirectoryConfigs(segmentDirectoryConfigs).build();
+    SegmentDirectoryLoaderContext segmentLoaderContext = new 
SegmentDirectoryLoaderContext.Builder()
+        .setTableConfig(tableConfig)
+        .setSchema(schema)
+        .setSegmentName(segmentFile.getName())
+        .build();
     SegmentDirectory segmentDirectory = 
SegmentDirectoryLoaderRegistry.getDefaultSegmentDirectoryLoader()
         .load(segmentFile.toURI(), segmentLoaderContext);
 
diff --git 
a/pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/loader/SegmentDirectoryLoaderContext.java
 
b/pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/loader/SegmentDirectoryLoaderContext.java
index 5fc6db87132..2fc8eed295e 100644
--- 
a/pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/loader/SegmentDirectoryLoaderContext.java
+++ 
b/pinot-segment-spi/src/main/java/org/apache/pinot/segment/spi/loader/SegmentDirectoryLoaderContext.java
@@ -21,14 +21,14 @@ package org.apache.pinot.segment.spi.loader;
 import java.util.Map;
 import org.apache.pinot.spi.config.table.TableConfig;
 import org.apache.pinot.spi.data.Schema;
-import org.apache.pinot.spi.env.PinotConfiguration;
+import org.apache.pinot.spi.utils.ReadMode;
 
 
 /**
  * Context for {@link SegmentDirectoryLoader}
  */
 public class SegmentDirectoryLoaderContext {
-
+  private final ReadMode _readMode;
   private final TableConfig _tableConfig;
   private final Schema _schema;
   private final String _instanceId;
@@ -37,12 +37,12 @@ public class SegmentDirectoryLoaderContext {
   private final String _segmentCrc;
   private final String _segmentTier;
   private final Map<String, Map<String, String>> _instanceTierConfigs;
-  private final PinotConfiguration _segmentDirectoryConfigs;
   private final Map<String, String> _segmentCustomConfigs;
 
-  private SegmentDirectoryLoaderContext(TableConfig tableConfig, Schema 
schema, String instanceId, String tableDataDir,
-      String segmentName, String segmentCrc, String segmentTier, Map<String, 
Map<String, String>> instanceTierConfigs,
-      PinotConfiguration segmentDirectoryConfigs, Map<String, String> 
segmentCustomConfigs) {
+  private SegmentDirectoryLoaderContext(ReadMode readMode, TableConfig 
tableConfig, Schema schema, String instanceId,
+      String tableDataDir, String segmentName, String segmentCrc, String 
segmentTier,
+      Map<String, Map<String, String>> instanceTierConfigs, Map<String, 
String> segmentCustomConfigs) {
+    _readMode = readMode;
     _tableConfig = tableConfig;
     _schema = schema;
     _instanceId = instanceId;
@@ -51,10 +51,13 @@ public class SegmentDirectoryLoaderContext {
     _segmentCrc = segmentCrc;
     _segmentTier = segmentTier;
     _instanceTierConfigs = instanceTierConfigs;
-    _segmentDirectoryConfigs = segmentDirectoryConfigs;
     _segmentCustomConfigs = segmentCustomConfigs;
   }
 
+  public ReadMode getReadMode() {
+    return _readMode;
+  }
+
   public TableConfig getTableConfig() {
     return _tableConfig;
   }
@@ -83,10 +86,6 @@ public class SegmentDirectoryLoaderContext {
     return _segmentTier;
   }
 
-  public PinotConfiguration getSegmentDirectoryConfigs() {
-    return _segmentDirectoryConfigs;
-  }
-
   public Map<String, Map<String, String>> getInstanceTierConfigs() {
     return _instanceTierConfigs;
   }
@@ -96,6 +95,7 @@ public class SegmentDirectoryLoaderContext {
   }
 
   public static class Builder {
+    private ReadMode _readMode = ReadMode.DEFAULT_MODE;
     private TableConfig _tableConfig;
     private Schema _schema;
     private String _instanceId;
@@ -104,9 +104,13 @@ public class SegmentDirectoryLoaderContext {
     private String _segmentCrc;
     private String _segmentTier;
     private Map<String, Map<String, String>> _instanceTierConfigs;
-    private PinotConfiguration _segmentDirectoryConfigs;
     private Map<String, String> _segmentCustomConfigs;
 
+    public Builder setReadMode(ReadMode readMode) {
+      _readMode = readMode;
+      return this;
+    }
+
     public Builder setTableConfig(TableConfig tableConfig) {
       _tableConfig = tableConfig;
       return this;
@@ -147,19 +151,14 @@ public class SegmentDirectoryLoaderContext {
       return this;
     }
 
-    public Builder setSegmentDirectoryConfigs(PinotConfiguration 
segmentDirectoryConfigs) {
-      _segmentDirectoryConfigs = segmentDirectoryConfigs;
-      return this;
-    }
-
     public Builder setSegmentCustomConfigs(Map<String, String> 
segmentCustomConfigs) {
       _segmentCustomConfigs = segmentCustomConfigs;
       return this;
     }
 
     public SegmentDirectoryLoaderContext build() {
-      return new SegmentDirectoryLoaderContext(_tableConfig, _schema, 
_instanceId, _tableDataDir, _segmentName,
-          _segmentCrc, _segmentTier, _instanceTierConfigs, 
_segmentDirectoryConfigs, _segmentCustomConfigs);
+      return new SegmentDirectoryLoaderContext(_readMode, _tableConfig, 
_schema, _instanceId, _tableDataDir,
+          _segmentName, _segmentCrc, _segmentTier, _instanceTierConfigs, 
_segmentCustomConfigs);
     }
   }
 }
diff --git 
a/pinot-server/src/main/java/org/apache/pinot/server/predownload/PredownloadSegmentInfo.java
 
b/pinot-server/src/main/java/org/apache/pinot/server/predownload/PredownloadSegmentInfo.java
index d876192ef5f..cb4810c72d1 100644
--- 
a/pinot-server/src/main/java/org/apache/pinot/server/predownload/PredownloadSegmentInfo.java
+++ 
b/pinot-server/src/main/java/org/apache/pinot/server/predownload/PredownloadSegmentInfo.java
@@ -120,13 +120,17 @@ public class PredownloadSegmentInfo {
   public SegmentDirectory initSegmentDirectory(IndexLoadingConfig 
indexLoadingConfig,
       PredownloadTableInfo predownloadTableInfo) {
     try {
-      SegmentDirectoryLoaderContext loaderContext =
-          new 
SegmentDirectoryLoaderContext.Builder().setTableConfig(indexLoadingConfig.getTableConfig())
-              
.setSchema(indexLoadingConfig.getSchema()).setInstanceId(indexLoadingConfig.getInstanceId())
-              
.setTableDataDir(indexLoadingConfig.getTableDataDir()).setSegmentName(_segmentName)
-              
.setSegmentCrc(String.valueOf(_crc)).setSegmentTier(indexLoadingConfig.getSegmentTier())
-              
.setInstanceTierConfigs(indexLoadingConfig.getInstanceTierConfigs())
-              
.setSegmentDirectoryConfigs(indexLoadingConfig.getSegmentDirectoryConfigs()).build();
+      SegmentDirectoryLoaderContext loaderContext = new 
SegmentDirectoryLoaderContext.Builder()
+          .setReadMode(indexLoadingConfig.getReadMode())
+          .setTableConfig(indexLoadingConfig.getTableConfig())
+          .setSchema(indexLoadingConfig.getSchema())
+          .setInstanceId(indexLoadingConfig.getInstanceId())
+          .setTableDataDir(indexLoadingConfig.getTableDataDir())
+          .setSegmentName(_segmentName)
+          .setSegmentCrc(String.valueOf(_crc))
+          .setSegmentTier(indexLoadingConfig.getSegmentTier())
+          .setInstanceTierConfigs(indexLoadingConfig.getInstanceTierConfigs())
+          .build();
       SegmentDirectoryLoader segmentDirectoryLoader =
           
SegmentDirectoryLoaderRegistry.getSegmentDirectoryLoader(indexLoadingConfig.getSegmentDirectoryLoader());
       File indexDir = getSegmentDataDir(predownloadTableInfo, true);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to