J-HowHuang opened a new pull request, #17453:
URL: https://github.com/apache/pinot/pull/17453

   ## Description
   
   Currently Pinot server uses the default Helix thread pool for state 
transition messages (appears as 
`HelixTaskExecutor-message_handle_thread_<tid>`). The main concern of this is 
that 
   1. Every transition regardless of the states uses the same pool. New 
consuming segments (OFFLINE->ONLINE) could be blocked by operations on other 
tables (e.g. reset, rebalance) because they flood the message queue.
   2. It's not possible to manage the threads within the scope of Pinot. For 
example, change max threads.
   
   ## Changes
   * Add a new interface `StateTransitionThreadPoolManager` in charge of 
constructing the thread pools for different state transition messages
   * Override `getExecutorService` methods in 
`SegmentOnlineOfflineStateModelFactory` to return the thread pools created by 
`StateTransitionThreadPoolManager`
   * By default the `StateTransitionThreadPoolManager` is `null`, which returns 
`null` in all the `getExecutorService` method calls. This would be no 
difference than using the default shared thread pool in Helix. The 
implementation of `StateTransitionThreadPoolManager` needs to be provided and 
set during pinot server start.


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