public sealed class RolloutThe rolling upgrade, as a function of the fleet and the clock.
Remarks
A plain class the grain drives, which is the pattern MapCoordinator, ShardLifecycle and PlayerLeaseState established: § Testing asks for "a rollout from version A to B with players in flight, asserting nobody is disconnected and VersionSpread reaches zero", and that is a test over a list of reports rather than an afternoon with a cluster.
⚠ It never kills anything. Every step it produces is Drain, and a drain moves players out at safe moments (§ Drain). Doc 27 is explicit that nothing is force-disconnected and that an escalation ends in a person; a rollout that could disconnect would be the one live-ops action able to undo that promise.
Fields and properties (2)
public RealmVersion TargetWhat new shards are started on.
public DateTimeOffset SinceWhen the target was last changed.
Methods (5)
public Rollout(RealmVersion target, DateTimeOffset since, RolloutPolicy? policy = null)Starts one.
public void PointAt(RealmVersion version, DateTimeOffset now)Points the fleet somewhere else. A rollback is this with the old pair.
public RolloutDecision Observe(IReadOnlyCollection<ShardReport> shards, DateTimeOffset now)Decides what to do next.
public bool Admits(RealmVersion version, DateTimeOffset now)Whether a shard may still be started on a version that is not the target.
public override string ToString()Returns a string that represents the current object.
Used by (1)
- RolloutTestsVixen.Live.Orchestrator.Tests