Vixen
02b45cc4
csharp
public readonly record struct RealmVersion

What a shard was built from: an assembly version and a content hash.

Read the guide page for this →

Remarks

ADR-022. Both halves, and both of them filter placement rather than only rejecting a handshake. Doc 16's session already refuses a peer whose content hash differs; making the same number a placement term is the whole of the incremental-upgrade story, because a client that has not fetched the catalog update yet is then routed to a shard that still matches instead of being told no.

⚠ Content is the catalog's BuildHash, not a second number. One value, three uses: the handshake compares it, placement filters on it, and vixen content build produces it. A registry mapping "content version" to "catalog hash" would be a fourth place for them to disagree.

Fields and properties (4)

  • public ulong Content

    The catalog's BuildHash.

  • public static RealmVersion None

    Nothing in particular — what a spec that named no version decodes to.

  • public string Build

    The assembly version. Null only on default; see RealmInstanceId.

  • public bool IsValid

    Whether this names a version at all.

Methods (6)

  • public RealmVersion(string Build, ulong Content)

    What a shard was built from: an assembly version and a content hash.

  • public bool Admits(RealmVersion other)

    Whether a client carrying may be placed on this shard.

  • public static bool TryParse(string? text, out RealmVersion version)

    Reads one back.

  • public bool Equals(RealmVersion other)

    Whether two versions are the same version.

  • public override int GetHashCode()

    Returns the hash code for this instance.

  • public override string ToString()

    Returns the fully qualified type name of this instance.

Used by (29)

  • CatalogResponseVixen.Live.Abstractions
  • ClientTransferVixen.Live.Transfer
  • ClientTransferTestsVixen.Live.Transfer.Tests
  • FleetGrainVixen.Live.Orchestrator
  • GateClientTestsVixen.Live.Client.Tests
  • GateJsonVixen.Live.Abstractions
  • GateOptionsVixen.Live.Gate
  • GateProtocolTestsVixen.Live.Abstractions.Tests
  • GateServiceVixen.Live.Gate
  • GateServiceTestsVixen.Live.Gate.Tests
  • IFleetGrainVixen.Live.Cluster
  • LiveVocabularyTestsVixen.Live.Abstractions.Tests
  • MapGrainVixen.Live.Orchestrator
  • PlacementDirectorVixen.Live.Orchestrator
  • PlacementDirectorTestsVixen.Live.Orchestrator.Tests
  • PlayRequestVixen.Live.Abstractions
  • RealmVixen.Live.Realm
  • RealmVixen.Live.Realm.Tests
  • RealmClusterTestsVixen.Live.Realm.Cluster.Tests
  • RealmFixtureVixen.Live.Realm.Tests
  • RealmHostVixen.Live.Realm
  • RealmSpecVixen.Live.Abstractions
  • RealmVersionConverterVixen.Live.Cluster
  • RealmVersionJsonConverterVixen.Live.Abstractions
  • RolloutVixen.Live.Orchestrator
  • RolloutTestsVixen.Live.Orchestrator.Tests
  • ShardKeyVixen.Live.Abstractions
  • ShardKeySurrogateVixen.Live.Cluster
  • TransferPrepareVixen.Live.Transfer