Motivation
Currently, Druid has a coordinator config but no broker-level dynamic config which can be appropriate for features like query blocklist enforcement, data aliases, routing rules, feature flags etc. The primary motivation for having a broker config is for blocklisting queries dynamically in the situation there is a rogue app/user spamming the cluster without relying on static configs/restarts.
Proposed changes
Broker config
Similar to CoordinatorDynamicConfig, introduce a broker-level dynamic config persisted in metadata store, polled periodically by brokers. Admin APIs to GET and POST configs (UI can be added later).
Query Blocklist
Enforce at broker query lifecycle, blocklist based on datasource in query or additionally, query context matches, querytype, remote address etc.
Rationale
Alternatively, we could reuse coordinator dynamic config for query blocklisting but it is not the appropriate enforcement point and would require broker to pull coordinator config. Moreover, broker config can be used for other future features such as datasource aliasing, routing rules or feature flags.
Motivation
Currently, Druid has a coordinator config but no broker-level dynamic config which can be appropriate for features like query blocklist enforcement, data aliases, routing rules, feature flags etc. The primary motivation for having a broker config is for blocklisting queries dynamically in the situation there is a rogue app/user spamming the cluster without relying on static configs/restarts.
Proposed changes
Broker config
Similar to CoordinatorDynamicConfig, introduce a broker-level dynamic config persisted in metadata store, polled periodically by brokers. Admin APIs to GET and POST configs (UI can be added later).
Query Blocklist
Enforce at broker query lifecycle, blocklist based on datasource in query or additionally, query context matches, querytype, remote address etc.
Rationale
Alternatively, we could reuse coordinator dynamic config for query blocklisting but it is not the appropriate enforcement point and would require broker to pull coordinator config. Moreover, broker config can be used for other future features such as datasource aliasing, routing rules or feature flags.