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

   ### Steps to reproduce
   
   - Define REALTIME table schema and table config using Pinot **_1.2.0_**
   - In the table config, make sure the **_upsertConfig_** has 
**_enableSnapshot = true_** and **_enablePreload = true_** as below:
   ```json 
   "upsertConfig": {
           "mode": "FULL",
           "comparisonColumns": ["someField"],
           "partialUpsertStrategies": {},
           "deleteRecordColumn": "isDeleted",
           "deletedKeysTTL": 86400000,
           "enableSnapshot": true,
           "enablePreload": true
   }
   ```
   - Load some records using Kafka and check that data is visible and all 
segments are GOOD.
   - Now, pause the Kafka consumption using following command:
   ```shell
   curl --location --request POST 
'http://localhost:9000/tables/myTable/pauseConsumption'
   ```
   - Make sure consumption is paused using following command:
   ```shell
   curl --location 'http://localhost:9000/tables/myTable/pauseStatus'
   ```
   - Resume the consumption using following command:
   ```shell
   curl --location --request POST 
'http://localhost:9000/tables/myTable/resumeConsumption'
   ```
   - Now, check the segment status.
   - All the older segments are marked BAD and new consuming ones as GOOD.
   - The server logs has following error for segments failing to load:
   ```
   2024-09-24 13:21:19 Caused by: java.lang.IllegalStateException: Snapshot of 
validDocIds is required to preload segment: myTable__0__0__20240924T0750Z, 
table: myTable_REALTIME
   ```
   
   ### Note
   
   - Same POC runs properly without any errors on Pinot **_1.1.0_**
   - Issue occurs only when using **_upsertConfig.enableSnapshot = true_** and 
**_upsertConfig.enablePreload = true_**
   
   ### Exception
   ```
   2024-09-24 13:21:19 2024/09/24 07:51:19.021 ERROR 
[HelixStateTransitionHandler] [HelixTaskExecutor-message_handle_thread_10] 
Exception while executing a state transition task myTable__0__0__20240924T0750Z
   2024-09-24 13:21:19 java.lang.reflect.InvocationTargetException: null
   2024-09-24 13:21:19     at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:?]
   2024-09-24 13:21:19     at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
 ~[?:?]
   2024-09-24 13:21:19     at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
   2024-09-24 13:21:19     at 
java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
   2024-09-24 13:21:19     at 
org.apache.helix.messaging.handling.HelixStateTransitionHandler.invoke(HelixStateTransitionHandler.java:350)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.helix.messaging.handling.HelixStateTransitionHandler.handleMessage(HelixStateTransitionHandler.java:278)
 
[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.helix.messaging.handling.HelixTask.call(HelixTask.java:97) 
[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.helix.messaging.handling.HelixTask.call(HelixTask.java:49) 
[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
   2024-09-24 13:21:19     at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
 [?:?]
   2024-09-24 13:21:19     at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
 [?:?]
   2024-09-24 13:21:19     at java.base/java.lang.Thread.run(Thread.java:840) 
[?:?]
   2024-09-24 13:21:19 Caused by: java.lang.IllegalStateException: Snapshot of 
validDocIds is required to preload segment: myTable__0__0__20240924T0750Z, 
table: myTable_REALTIME
   2024-09-24 13:21:19     at 
org.apache.pinot.shaded.com.google.common.base.Preconditions.checkState(Preconditions.java:838)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.segment.local.upsert.BasePartitionUpsertMetadataManager.doPreloadSegment(BasePartitionUpsertMetadataManager.java:513)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.segment.local.upsert.BasePartitionUpsertMetadataManager.preloadSegment(BasePartitionUpsertMetadataManager.java:498)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.core.data.manager.realtime.RealtimeTableDataManager.handleUpsert(RealtimeTableDataManager.java:585)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.core.data.manager.realtime.RealtimeTableDataManager.addSegment(RealtimeTableDataManager.java:541)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.core.data.manager.realtime.RealtimeTableDataManager.downloadAndReplaceConsumingSegment(RealtimeTableDataManager.java:628)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.core.data.manager.realtime.RealtimeSegmentDataManager.downloadSegmentAndReplace(RealtimeSegmentDataManager.java:1351)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.core.data.manager.realtime.RealtimeSegmentDataManager.goOnlineFromConsuming(RealtimeSegmentDataManager.java:1290)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.core.data.manager.realtime.RealtimeTableDataManager.doAddOnlineSegment(RealtimeTableDataManager.java:421)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.core.data.manager.BaseTableDataManager.addOnlineSegment(BaseTableDataManager.java:313)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.server.starter.helix.HelixInstanceDataManager.addOnlineSegment(HelixInstanceDataManager.java:275)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     at 
org.apache.pinot.server.starter.helix.SegmentOnlineOfflineStateModelFactory$SegmentOnlineOfflineStateModel.onBecomeOnlineFromConsuming(SegmentOnlineOfflineStateModelFactory.java:88)
 
~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
   2024-09-24 13:21:19     ... 12 more
   ```
   
   


-- 
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.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