-
Notifications
You must be signed in to change notification settings - Fork 4.1k
*: rework zone configurations to support tenants #67679
Copy link
Copy link
Closed
Labels
A-multitenancyRelated to multi-tenancyRelated to multi-tenancyA-zone-configsC-enhancementSolution expected to add code/behavior + preserve backward-compat (pg compat issues are exception)Solution expected to add code/behavior + preserve backward-compat (pg compat issues are exception)T-kvKV TeamKV Team
Description
This is the tracking issue for #66348. We've been prototyping the what's described in the RFC over at multi-tenant-zcfgs (see all the recent PRs prefixed with [prototype] and the project board here). This is the tracking issue to merge the prototype branch back into master, adding more rigorous testing for it as we do. We expect the work to ~ break down into the following major and minor PRs:
Major:
- spanconfig: introduce the span config manager #68522; introduce the span config manager and the reconciliation job
- server,roachpb: introduce span config rpcs #69047; expose new span config related RPCs on KV, introduce the backing system table on the host tenant, and grant access to KV RPCs through the tenant
Connector - kvserver: abstract away system config span usage in kv #69172; abstract away the use of the system config span in KV
- spanconfig: introduce spanconfig.StoreWriter (and its impl) #70287; implement an in-memory data structure to store spans and their corresponding configs
- spanconfig: introduce the spanconfig.SQLTranslator #71359; translate sql descriptors and corresponding zone configs into constituent spans and span configs
- spanconfig: introduce spanconfig.KVSubscriber #69614; introduce a per-store listener over
system.span_configurations, using it to maintain aspanconfig.Storeto replaceconfig.SystemConfig - spanconfig: introduce the spanconfig.SQLWatcher #71968; introduce watchers over system.{descriptor,zones} in SQL to learn about zone config changes
- spanconfig: introduce spanconfig.Reconciler #71994; make use of SQL{Watcher,Translator} and spanconfig.Store to issue RPCs to KV
Minor:
- sql: allow secondary tenants to set/show zone configurations #69169; introduce
system.zonesfor secondary tenants + enable secondary tenants to commit zone configs - sql: validate constraints when secondary tenants set zone configs #69275; validate locality constraints/regions in zone configs for secondary tenants
- spanconfig: disable infrastructure unless envvar is set #69658; gate the creation of reconciliation job behind a cluster setting for secondary tenants, and env var for host tenant
- kvclient/rangefeed: make frontier advances observable using an option #71256 + rangefeedbuffer: introduce a rangefeed buffer #71225; introduce a thin buffer on top of a rangefeed to batch + flush timestamp sorted events
- spanconfigkvaccessor: add datadriven tests for interface #71795; add datadriven tests for the KVAccessor
- rangefeed: surface unrecoverable errors and don't hopelessly retry #73086; expose "frontier timestamp precedes the GC threshold" rangefeed errors
- spanconfig/store: support applying a batch of updates #73150; support atomic batch update for spanconfig store
- Add limits to request sizes for
{Get,Update}SpanConfigs - Overload
RANGE TENANTto seed default zone config for new tenants - De-deplicate config proto messages between zonepb and roachpb
- Expose the number of KVSubscriber restarts due to internal errors as a metric
- Write datadriven tests for spanconfig.SQLWatcher
- Add checkpointing to the reconciliation job
Epic CRDB-2515.
Epic CRDB-10563
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-multitenancyRelated to multi-tenancyRelated to multi-tenancyA-zone-configsC-enhancementSolution expected to add code/behavior + preserve backward-compat (pg compat issues are exception)Solution expected to add code/behavior + preserve backward-compat (pg compat issues are exception)T-kvKV TeamKV Team