somandal commented on code in PR #16002:
URL: https://github.com/apache/pinot/pull/16002#discussion_r2178584430


##########
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/ForwardIndexHandler.java:
##########
@@ -477,6 +477,9 @@ private void rewriteForwardIndexForCompressionChange(String 
column, ColumnMetada
     try (ForwardIndexReader<?> reader = ForwardIndexType.read(segmentWriter, 
columnMetadata)) {
       IndexCreationContext.Builder builder =
           
IndexCreationContext.builder().withIndexDir(indexDir).withColumnMetadata(columnMetadata);
+      if (_tableConfig != null) {

Review Comment:
   So the issue is that all the interfaces mark the `tableConfig` as 
`@Nullable`, e.g:
   
   ```
     public BaseIndexHandler(SegmentDirectory segmentDirectory, Map<String, 
FieldIndexConfigs> fieldIndexConfigs,
         @Nullable TableConfig tableConfig)
   ```
   
   Similarly:
   
   ```
     IndexHandler createIndexHandler(SegmentDirectory segmentDirectory, 
Map<String, FieldIndexConfigs> configsByCol,
         @Nullable Schema schema, @Nullable TableConfig tableConfig);
   ```
   
   And some code paths that are just meant to read and tests can set the 
`tableConfig` as null:
   ```
     /**
      * Loads the segment with empty schema and IndexLoadingConfig. This method 
is used to
      * access the segment without modifying it, i.e. in read-only mode.
      */
     public static ImmutableSegment load(File indexDir, ReadMode readMode)
         throws Exception {
       IndexLoadingConfig defaultIndexLoadingConfig = new IndexLoadingConfig();
       defaultIndexLoadingConfig.setReadMode(readMode);
       return load(indexDir, defaultIndexLoadingConfig, false);
     }
   
     /**
      * NOTE: Can be used in production code when we want to load a segment as 
is without any modifications.
      */
     public IndexLoadingConfig() {
       this(null, null, null); // null tableConfig
     }
   
     public IndexLoadingConfig(@Nullable InstanceDataManagerConfig 
instanceDataManagerConfig,
         @Nullable TableConfig tableConfig, @Nullable Schema schema) {
       _instanceDataManagerConfig = instanceDataManagerConfig;
       _tableConfig = tableConfig;
       _schema = schema;
       init();
     }
   ```
   
   So that's why I decided to add handling throughout to prevent weird issues 
with tests and all. I don't think for the code paths where we actually intend 
to create segments we'll come across a null tableConfig. Even the 
tableNameWithType null checks are mostly for this kind of compliance. Let me 
know if you think we should remove this null handling and try it out?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to