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]

Reply via email to