Bug Report: Throttler Config Via Topo Is Broken #12523
Labels
Component: Online DDL
Online DDL (vitess/native/gh-ost/pt-osc)
Component: Query Serving
Component: VReplication
Type: Bug
Overview of the Issue
In #11604 we added support for dynamic tablet throttler configuration.
The problem with the implementation we landed on is a general one because we stored the configuration directly in the cell local
SrvKeyspace
records.The
Keyspace
record is the persistent and (mostly) static keyspace configuration stored in the global topo. The "Keyspace [Serving] Graph" is stored in theSrvKeyspace
records across the cells and that is dynamic and ephemeral, regularly built and rebuilt from the global topo info and the live state. We build and rebuild it internally per cell and across all cells when certain operations happen, and a user can rebuild them as well using theRebuildKeyspaceGraph
client command. Currently inrelease-16.0
andmain
, anytime aSrvKeyspace
record in a cell is built/rebuilt, it WILL NOT have any previously configuredThrottlerConfig
value. So what tablets have what config will be undefined and chaotic (not to mention the Vitess Operator’sSrvKeyspace
pruning behavior).We can instead store the configuration in the global topo
Keyspace
record and propagate that to theSrvKeyspace
records on build/rebuild — leaving the rest of the work largely unchanged (see draft PR for an example).There were also some more minor issues:
IsEnabled
property is no longer a static property of the throttler via tablet flags but is dynamic. There was no way to observe whether or not the throttler was currently active/enabled on a tablet.Reproduction Steps
An easy way to demonstrate the general problem:
You will see that the throttler config is wiped out after the rebuild:
Binary Version
Operating System and Environment details
Log Fragments
The text was updated successfully, but these errors were encountered: