-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
Labels
bugSomething is not working as expectedSomething is not working as expectedupsertRelated to upsert functionalityRelated to upsert functionality
Description
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:
"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:
curl --location --request POST 'http://localhost:9000/tables/myTable/pauseConsumption'- Make sure consumption is paused using following command:
curl --location 'http://localhost:9000/tables/myTable/pauseStatus'- Resume the consumption using following command:
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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething is not working as expectedSomething is not working as expectedupsertRelated to upsert functionalityRelated to upsert functionality