Skip to content

Grain version selector strategies

After the compatibility strategy filters available interface versions, the selector strategy determines which versions remain eligible for placement.

StrategyEligible versions
AllCompatibleVersionsEvery compatible version
LatestVersionThe highest compatible version
MinimumVersionThe lowest compatible version

AllCompatibleVersions is the default. It returns all compatible versions, and Orleans placement selects a compatible silo. Distribution therefore follows the available compatible silos, not a guaranteed equal percentage per version.

With request version 1, available versions 1 and 2, and BackwardCompatible, both versions are eligible.

LatestVersion returns only the highest compatible version. It moves new activations toward the newest deployment while preserving the compatibility filter.

With request version 1, available versions 1 and 2, and BackwardCompatible, only version 2 is eligible. With request version 3, neither version is compatible, so placement can’t satisfy the request.

MinimumVersion returns only the lowest compatible version. It can keep older compatible implementations serving older callers during staged validation.

With request version 1 and available versions 2 and 3 under BackwardCompatible, version 2 is selected. With request version 3, only version 3 or newer can be compatible; the selector never bypasses the compatibility rule to choose version 2.

Changing a selector affects placement of new activations. It doesn’t proactively replace compatible existing activations. An activation is replaced when it becomes incompatible with a request, is deactivated normally, or its silo leaves the cluster.