-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
Problem
The existing “pause ingestion based on resource utilization” feature (docs) only works for realtime ingestion and minion based offline ingestion. I’m looking to add support to the offline segment upload API, /v2/segments, so that the Pinot controller rejects a segment upload if disk utilization has breached the threshold.
Solution
The existing disk utilization checks are using ResourceUtilizationManager (code), which will check that all resources are under their utilization thresholds when deciding to allow ingestion to proceed. Since the only resource currently checked is disk utilization, this is effectively equivalent to calling the DiskUtilizationChecker (code) directly.
However, if in the future someone decides to add another resource (in addition to disk), all callers using ResourceUtilizationManager will automatically be opted in to checking that new resource, since the only config available is controller.enable.resource.utilization.check; you can't enable each resource individually as of today. This could be problematic, since users (like me) may only want the disk utilization check, but with the current config setup, they will be automatically opted in to any future resource utilization checks unexpectedly.
So as part of extending the disk utilization check to offline segment upload, I'd like to also introduce a way to toggle each resource utilization checker individually to prevent a case in the future where we're automatically opted-in to a new resource utilization checker. Something like controller.enable.resource.utilization.check.disk to specify we'd only like to enable the disk check.