Tarun-kishore opened a new issue, #20234:
URL: https://github.com/apache/pinot/issues/20234

   ### Motivation
   
   Currently, storage and QPS quotas can only be configured per table. Managing 
quotas across multiple tables is tedious, and new tables have no limits unless 
explicitly configured.
   
   ### Proposal
   
   Support **tenant-level quota defaults with table-level overrides**.
   
   - **Storage quota** (`storage`, `storageQuotaEnforcementMode`) is inherited 
from the server tenant.
   - **QPS quota** (`maxQueriesPerSecond`, `queryQuotaEnforcementMode`) is 
inherited from the broker tenant.
   - Each field is resolved independently, with table-level configs taking 
precedence.
   - Enforcement modes are inherited separately, allowing tenants to use 
`SHADOW` or tables to opt out using `DISABLED`.
   - These are per-table defaults, not aggregate tenant limits.
   - Existing behavior remains unchanged if no tenant defaults are configured. 
Logical tables do not inherit defaults.
   
   ### Configuration
   
   Store tenant defaults as `QuotaConfig` at `/CONFIGS/TENANT/<tenantName>`.
   
   New controller APIs:
   
   ```http
   GET    /tenants/{tenantName}/quotas
   PUT    /tenants/{tenantName}/quotas
   DELETE /tenants/{tenantName}/quotas
   ```
   
   Storage fields are valid only for server tenants, and QPS fields only for 
broker tenants. Unknown tenants return `404`. Defaults are cleaned up when a 
tenant is deleted.
   
   ### Applying Changes
   
   - **Storage:** Changes take effect on the next quota check.
   - **QPS:** The controller sends a `REFRESH_TENANT_CONFIG` Helix message so 
brokers can rebuild rate limiters for affected tables.
   
   ### Compatibility and Rollout
   
   - No behavior change until tenant defaults are configured.
   - Upgrade controllers and brokers before enabling defaults.
   - Recommended rollout: start with `SHADOW` mode, then enable enforcement.
   
   ### Follow-ups
   
   - **Primary key quota:** Add tenant-level defaults after #20118 merges.
   - **Ingestion rate quota:** Add tenant-level defaults for 
`topic.consumption.rate.limit` and `partition.consumption.rate.limit` 
separately, since these are stream configs rather than `QuotaConfig`.


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