Skip to main content

Module strategy

Module strategy 

Source
Expand description

The pure strategy interface and the strategy implementations.

A strategy is two pure functions over (observed cluster state, live signals, now):

  • Strategy::update_state returns the durable writes the strategy wants (cut-overs, record writes/clears). The controller transacts these in the tick’s first phase.
  • Strategy::desired_replicas returns the replica slots the strategy contributes to the cluster’s desired set. The controller unions every strategy’s contribution in the tick’s second phase.

Both are pure: same inputs, same output, no I/O. The controller is the sole mutator. Strategies never touch the ClusterControllerCtx directly. They declare the live signals they need via Strategy::signal_request and the controller fetches those before evaluating them.

Structs§

BaselineStrategy
The implicit baseline strategy, always present.
ConfigSignals
Environment-wide configuration the strategies consult, latched by the kernel once per tick from the controller’s dyncfgs so every strategy decides against one consistent config. Not durable cluster state, so never witness material.
DesiredReplica
A replica slot a strategy desires this tick. The reconcile kernel unions slots across strategies and matches them by ReplicaShape against the actual replica set.
GracefulReconfigurationStrategy
The graceful (zero-downtime) reconfiguration strategy.
HydrationBurstStrategy
The hydration-burst strategy.
LiveSignals
The fulfilled live signals for one cluster, fetched by the kernel per the unioned SignalRequest and passed alongside ClusterState.
OnRefreshStrategy
The ON REFRESH scheduling strategy.
SignalRequest
The live signals a strategy asks the kernel to fetch before evaluating a cluster, declared through Strategy::signal_request.

Traits§

Strategy
One cluster-autoscaling strategy: a pair of pure functions the controller runs each tick. See the module docs.