navina opened a new issue, #8819:
URL: https://github.com/apache/pinot/issues/8819

   One of the users added a new MV column to the schema and reloaded the 
segments. Fyi, the data in the topic doesn't have any values for this new 
field. It failed with the following exception:
   ```2022/05/31 19:47:55.833 ERROR 
[LLRealtimeSegmentDataManager_calls__0__856__20220531T1847Z] 
[calls__0__856__20220531T1847Z] Could not build segment
   java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
           at 
org.apache.pinot.segment.local.segment.index.readers.constant.ConstantMVForwardIndexReader.getDictIdMV(ConstantMVForwardIndexReader.java:48)
 ~[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.
   11.0-SNAPSHOT-b92cbb4df88eee0bf0fbb39dfc434387370edc8e]
           at 
org.apache.pinot.segment.local.segment.readers.PinotSegmentColumnReader.getValue(PinotSegmentColumnReader.java:89)
 
~[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.11.0-SNAPSHOT-b92cbb4df88e
   ee0bf0fbb39dfc434387370edc8e]
           at 
org.apache.pinot.segment.local.segment.readers.PinotSegmentRecordReader.getRecord(PinotSegmentRecordReader.java:226)
 
~[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.11.0-SNAPSHOT-b92cbb4df8
   8eee0bf0fbb39dfc434387370edc8e]
           at 
org.apache.pinot.segment.local.segment.readers.PinotSegmentRecordReader.next(PinotSegmentRecordReader.java:215)
 
~[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.11.0-SNAPSHOT-b92cbb4df88eee0
   bf0fbb39dfc434387370edc8e]
           at 
org.apache.pinot.segment.local.segment.creator.impl.SegmentIndexCreationDriverImpl.build(SegmentIndexCreationDriverImpl.java:218)
 ~[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.11.0-SNAPSH
   OT-b92cbb4df88eee0bf0fbb39dfc434387370edc8e]
           at 
org.apache.pinot.segment.local.realtime.converter.RealtimeSegmentConverter.build(RealtimeSegmentConverter.java:123)
 
~[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.11.0-SNAPSHOT-b92cbb4df88
   eee0bf0fbb39dfc434387370edc8e]
           at 
org.apache.pinot.core.data.manager.realtime.LLRealtimeSegmentDataManager.buildSegmentInternal(LLRealtimeSegmentDataManager.java:839)
 
[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.11.0-SNAPSHOT-b92cbb4df88eee0bf0fbb39dfc434387370edc8e]
           at 
org.apache.pinot.core.data.manager.realtime.LLRealtimeSegmentDataManager.buildSegmentForCommit(LLRealtimeSegmentDataManager.java:766)
 
[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.11.0-SNAPSHOT-b92cbb4df88eee0bf0fbb39dfc434387370edc8e]
           at 
org.apache.pinot.core.data.manager.realtime.LLRealtimeSegmentDataManager$PartitionConsumer.run(LLRealtimeSegmentDataManager.java:665)
 
[startree-pinot-all-0.11.0-SNAPSHOT-jar-with-dependencies.jar:0.11.0-SNAPSHOT-b92cbb4df88eee0bf0fbb39dfc434387370edc8e]
           at java.lang.Thread.run(Thread.java:829) [?:?]
   ```        
   
   ## Steps to reproduce
   1. Run the `RealtimeQuickstart` 
   2. Load some data
   3. `Edit schema` to add a new MV column
   4. Reload the segments 
   
   ### Things to note
   
   * The quickstart is using High level consumer, where as , the customer was 
using low level consumer. 
   * When reproducing, the same exception happens. However, this time the 
stacktrace is from the query path.
   ```
   2022/06/02 11:31:20.041 ERROR [BaseCombineOperator] [pqw-6] Caught exception 
while processing query: QueryContext{_tableName='meetupRsvp_REALTIME', 
_subquery=null, _selectExpressions=[event_id, event_name, event_tags, 
event_time, group_city, group_country, group_id, group_lat, group_lon, 
group_name, location, mtime, rsvp_count, venue_name], _aliasList=[null, null, 
null, null, null, null, null, null, null, null, null, null, null, null], 
_filter=null, _groupByExpressions=null, _havingFilter=null, 
_orderByExpressions=null, _limit=10, _offset=0, 
_queryOptions={responseFormat=sql, groupByMode=sql, timeoutMs=10000}, 
_expressionOverrideHints={}, _explain=false}
   java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
        at 
org.apache.pinot.segment.local.segment.index.readers.constant.ConstantMVForwardIndexReader.getDictIdMV(ConstantMVForwardIndexReader.java:48)
 ~[classes/:?]
        at 
org.apache.pinot.core.common.DataFetcher$ColumnValueReader.readStringValuesMV(DataFetcher.java:701)
 ~[classes/:?]
        at 
org.apache.pinot.core.common.DataFetcher.fetchStringValues(DataFetcher.java:391)
 ~[classes/:?]
        at 
org.apache.pinot.core.common.DataBlockCache.getStringValuesForMVColumn(DataBlockCache.java:462)
 ~[classes/:?]
        at 
org.apache.pinot.core.operator.docvalsets.ProjectionBlockValSet.getStringValuesMV(ProjectionBlockValSet.java:179)
 ~[classes/:?]
        at 
org.apache.pinot.core.common.RowBasedBlockValueFetcher.createFetcher(RowBasedBlockValueFetcher.java:84)
 ~[classes/:?]
        at 
org.apache.pinot.core.common.RowBasedBlockValueFetcher.<init>(RowBasedBlockValueFetcher.java:33)
 ~[classes/:?]
        at 
org.apache.pinot.core.operator.query.SelectionOnlyOperator.getNextBlock(SelectionOnlyOperator.java:97)
 ~[classes/:?]
        at 
org.apache.pinot.core.operator.query.SelectionOnlyOperator.getNextBlock(SelectionOnlyOperator.java:40)
 ~[classes/:?]
        at 
org.apache.pinot.core.operator.BaseOperator.nextBlock(BaseOperator.java:39) 
~[classes/:?]
        at 
org.apache.pinot.core.operator.combine.BaseCombineOperator.processSegments(BaseCombineOperator.java:158)
 ~[classes/:?]
        at 
org.apache.pinot.core.operator.combine.BaseCombineOperator$1.runJob(BaseCombineOperator.java:101)
 [classes/:?]
        at 
org.apache.pinot.core.util.trace.TraceRunnable.run(TraceRunnable.java:40) 
[classes/:?]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at 
com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:111)
 [guava-20.0.jar:?]
        at 
com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:58)
 [guava-20.0.jar:?]
        at 
com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:75)
 [guava-20.0.jar:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]
   ```
        
   * Another exception seen, tangential to this issue is a 
`NumberFormatException` in `SegmentsValidationAndRetentionConfig` and 
`SegmentStatusChecker`
   ```
   2022/06/02 11:32:53.528 ERROR [SegmentStatusChecker] [pool-17-thread-4] 
Caught exception while updating segment status for table meetupRsvp_REALTIME
   java.lang.NumberFormatException: null
        at java.lang.Integer.parseInt(Integer.java:614) ~[?:?]
        at java.lang.Integer.parseInt(Integer.java:770) ~[?:?]
        at 
org.apache.pinot.spi.config.table.SegmentsValidationAndRetentionConfig.getReplicasPerPartitionNumber(SegmentsValidationAndRetentionConfig.java:176)
 ~[classes/:?]
        at 
org.apache.pinot.controller.helix.SegmentStatusChecker.updateTableConfigMetrics(SegmentStatusChecker.java:143)
 ~[classes/:?]
        at 
org.apache.pinot.controller.helix.SegmentStatusChecker.processTable(SegmentStatusChecker.java:113)
 ~[classes/:?]
        at 
org.apache.pinot.controller.helix.SegmentStatusChecker.processTable(SegmentStatusChecker.java:56)
 ~[classes/:?]
        at 
org.apache.pinot.controller.helix.core.periodictask.ControllerPeriodicTask.processTables(ControllerPeriodicTask.java:116)
 ~[classes/:?]
        at 
org.apache.pinot.controller.helix.core.periodictask.ControllerPeriodicTask.runTask(ControllerPeriodicTask.java:85)
 ~[classes/:?]
        at 
org.apache.pinot.core.periodictask.BasePeriodicTask.run(BasePeriodicTask.java:150)
 ~[classes/:?]
        at 
org.apache.pinot.core.periodictask.BasePeriodicTask.run(BasePeriodicTask.java:135)
 ~[classes/:?]
        at 
org.apache.pinot.core.periodictask.PeriodicTaskScheduler.lambda$start$0(PeriodicTaskScheduler.java:87)
 ~[classes/:?]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) 
[?:?]
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
 [?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]
   
   ```
   


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to