xiangfu0 opened a new pull request, #19271: URL: https://github.com/apache/pinot/pull/19271
### What - Move the existing upsert preload handler from `RealtimeTableDataManager` into `BaseTableDataManager`. - Invoke the shared handler before OFFLINE segment load and replacement. - Keep the existing REALTIME preload behavior unchanged. ### Why Upsert preload was tied to the REALTIME table lifecycle even though the preload operation is provided by the shared table and partition upsert metadata managers. As a result, `OfflineTableDataManager#doAddOnlineSegment` skipped preload and proceeded directly to segment load or replacement. The root cause was the placement and invocation of the lifecycle hook, not the underlying partition preload implementation. ### Impact OFFLINE upsert implementations can now restore their partition state before processing segments. The path remains a no-op when upsert is not configured or preload is disabled. There are no configuration or public API changes. ### Tests - `OfflineTableDataManagerTest`: preload before a new segment load - `OfflineTableDataManagerTest`: preload before an existing segment replacement - `OfflineTableDataManagerTest`: normal load when preload is disabled - Focused reactor test: 3 tests passed - Spotless, Checkstyle, license checks, and `git diff --check` passed An optional warnings-enabled reactor `test-compile` was also attempted, but was blocked in `pinot-segment-local` by the existing unrelated `ZstandardDecompressor`/JetBrains `@NotNull` compilation issue. The normal focused reactor build above passes. -- 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]
