9aman opened a new pull request, #19830: URL: https://github.com/apache/pinot/pull/19830
## Problem `SegmentCompletionManager` read the table config from ZooKeeper on every segment completion request just to parse the reported offset (`segmentCommitStart` didn't even use it). When the controller's ZooKeeper session is busy, e.g. with the retention or validation managers reading whole-table segment metadata, the read can exceed the server's 10 s request timeout. A timed-out `segmentCommitStart` is still processed later, so the FSM aborts and the segment is built again. ## Change - Parse offsets with the factory the FSM resolved at creation (`SegmentCompletionFSM#getStreamPartitionMsgOffsetFactory()`; FSMs that return `null` keep the table config read). - Remove the unused offset parse from `segmentCommitStart`. - Check `_fsmMap` before `computeIfAbsent()`, which can lock the hash bin while another segment's FSM is created. If a table is deleted while a segment completes, the commit now fails at commit end instead of commit start. ## Testing New unit and integration tests fail without the fix. The integration test blocks table config reads: `segmentCommitStart` returned `NOT_SENT` after the 10 s timeout before, `COMMIT_CONTINUE` now. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- 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]
