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]