Vixen
02b45cc4
csharp
public sealed class Rollout

The rolling upgrade, as a function of the fleet and the clock.

Read the guide page for this →

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 Target

    What new shards are started on.

  • public DateTimeOffset Since

    When 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