Tarun-kishore opened a new pull request, #20235:
URL: https://github.com/apache/pinot/pull/20235
Adds quota defaults on a tenant that apply to every table on the tenant that
does not set the corresponding field in its own quota config:
- storage and storageQuotaEnforcementMode, from the table's server tenant
- maxQueriesPerSecond and queryQuotaEnforcementMode, from the table's broker
tenant
Defaults are stored at /CONFIGS/TENANT/<tenantName> as a QuotaConfig and
managed via GET/PUT/DELETE /tenants/{tenantName}/quotas. Storage fields can
only be set on a server tenant and query fields only on a broker tenant. The
defaults are removed once the tenant no longer exists in either role.
Resolution is per field (QuotaConfigUtils): a field set on the table wins,
otherwise the tenant default applies. Each enforcement mode is resolved
independently of its limit, so a tenant can run all its tables in SHADOW and a
table can opt out of a tenant limit by setting its mode to DISABLED. Logical
tables do not inherit tenant defaults.
StorageQuotaChecker and the realtime pause comment resolve the effective
quota from ZK on each check, so storage changes take effect on the next check.
Brokers resolve the effective QPS quota when building rate limiters; since a
tenant change does not bump the table config version, the controller sends a
REFRESH_TENANT_CONFIG message so brokers rebuild the limiters of the tables on
that broker tenant.
Absent defaults keep today's behavior. Upgrade all controllers and brokers
before setting tenant defaults, since older ones ignore them (older brokers
treat the refresh message as a no-op), and set SHADOW mode first to observe
breaches before enforcing.
Fixes #20234
--
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]