Skip to content

build(om): upgrade all OM packages consistently to Orleans 10.4 #285

Description

@egil

Goal

Upgrade every OM package consistently to Orleans 10.4.0, including Microsoft.Orleans.Journaling 10.4.0-alpha.1 for the preview integration. Consumers of this OM release must upgrade Orleans to 10.4 as well.

The maintainer explicitly replaced the earlier 10.3.1 compatibility requirement with a single consistent 10.4 baseline. Do not maintain a mixed package dependency strategy or a 10.3.1 runtime test matrix for this release. Persisted-data compatibility remains required.

All four OM libraries already target net10.0; no framework retarget is needed.

Required Compatibility Work

Coordinate these changes and the shared dependency update so the solution, test hosts and shipped packages use the same 10.4 baseline. Separate PR ownership remains, but final validation must use an integrated snapshot.

Upgrade And Verification

  • Update all centralized Orleans package entries consistently: stable packages to 10.4.0 and Journaling to 10.4.0-alpha.1. Align production references, test hosts and packed dependency groups; do not retain mixed 10.3/10.4 pins.
  • Verify the four produced NuGet packages' target frameworks, dependency groups, matching core OM minimum, and Journaling preview version alignment. Update the compatibility statements in the README/API documentation.
  • Run restore, warning-free Release build, all six OM test projects, pack and existing package-validation/consumer workflows at the final commit. Use the existing provider/consumer tests to verify conventional state persistence, receiver receipt/checkpoint reload, stream fan-out RequestContext identity, explicit/implicit subscription reactivation, timer retry and durable reminder handoff.
  • Exercise recovery across the stream changes: typed cache results and provider offsets (#9714), token domains (fix(om): preserve enriched Event Hubs token compatibility on Orleans 10.4 #282), prefetch/recovery ownership (#11149, #11144) and pulling-agent shutdown (#11268). Add focused regression coverage only where existing tests leave an OM behavior unproven.
  • Audit OM-facing RPC contracts and examples for explicitly numbered parameters and non-trailing CancellationToken (#11179). Distinguish parameter IDs from serialized data-member IDs; document any affected wire-contract rollout.
  • Verify callback/default-interface-method dispatch and custom implementations still work after framework cancellation overloads (#10937); cancellation adoption itself is feat(om): use Orleans 10.4 cancellation-aware reminder APIs #283.
  • Record which external-provider tests actually ran and which need credentials/infrastructure. Successful compilation is not proof of a broker or durable-storage restart path.

Consumer Upgrade Notes

Document actionable host-owned changes without adding OM abstractions for them:

  • Orleans request latency becomes orleans-app-requests-latency, a native histogram in fractional milliseconds; legacy bucket/count/sum instruments and duration labels are replaced (#11251). Update exporter Views/dashboards where used.
  • Grain metrics use canonical grain_type rather than the former CLR type label (#11253). OM's own instruments are separate.
  • Existing SQLite databases need the corrected idempotent Orleans main/persistence scripts if the application uses that provider (#11354).
  • Memory-stream MaxAddCount is host tuning with unchanged default 100 (#11238).
  • Start-position controls require upgrading pulling-agent silos before enabling them; the opt-in OM feature is feat(om): expose Orleans 10.4 stream subscription start positions #284.

Release Review Disposition

All 293 release change entries were reviewed against upstream PR descriptions/changed paths, with detailed source review for OM integration points. Runtime membership, shutdown, directory and serialization corrections primarily arrive through the package upgrade and existing behavioral verification. New S3 journal storage, named-provider Durable Jobs migration, clustering conformance tooling, Hot Reload and NativeAOT building blocks do not by themselves require a new OM feature or a claim of AOT support.

Do not adopt the drained-subscription checkpoint advancement from #11249: it was reverted in #11330 before release.

Verification Scope

Use the normal NuGet validation and existing behavioral/consumer test suites. The maintainer explicitly removed the additional packed-consumer script, fresh-cache/reference-switching harness, DLL hash receipts and dedicated compatibility CI job as redundant; consumers are not expected to run a verification script.

Acceptance

  • All OM packages and test hosts use the consistent 10.4 baseline, and both required compatibility issues are satisfied.
  • Required OM build/test/pack/consumer checks pass at the final commit, with no Release warnings.
  • Produced packages retain net10.0, stable/preview package boundaries, and dependency minimums which require Orleans 10.4. Existing consumer/runtime tests pass on 10.4.
  • Durable recovery and provider-token behavior have evidence, with infrastructure-dependent gaps named explicitly.
  • Consumer upgrade notes clearly state that this OM release requires upgrading Orleans to 10.4 and distinguish OM changes from application-owned database/dashboard/configuration changes.
  • Optional features feat(om): use Orleans 10.4 cancellation-aware reminder APIs #283 and feat(om): expose Orleans 10.4 stream subscription start positions #284 remain independently tracked and deferred from this required upgrade work.

Reviewed against OM source at 2b5d24614ff08a9028ebc61995308176dbb90841; current main at fcca835c3141ac32874c70f687583d2c49ae4847 differs only in OM's version file.

Activity

  1. changed the title [-]build(om): upgrade and validate the Orleans 10.4 package family[/-] [+]build(om): validate Orleans 10.4 while preserving stable core compatibility[/+] on Oct 4, 2026
  2. egil commented on Oct 5, 2026

    @egil
    OwnerAuthor

    Issue #285 implementation checkpoint: owned branch egil/om-orleans-compatibility, based on origin/main fcca835.

    The stable dependency strategy retains 10.3.1 for ALL stable libraries (core, AzureStorage, EventHubs), as clarified by the maintainer. New packed-consumer mode reuses the existing five stable suites with project references removed, independently resolved Orleans hosts, fresh package caches, dependency graph checks and DLL hash verification.

    Preliminary 10.3.1 packed-binary run passed: core 831, state consumer 3, streams consumer 3, Azure adapter 42, Event Hubs adapter 32 tests (911 total), no skips, warning-free builds. These are current-main binaries; final evidence must be rerun after fixed #281/#282 snapshots are integrated.

    The preliminary 10.4 host cannot yet compile State/JournaledFacetRejectionTests.cs: it names the removed IJournaledState preview API. Core StateManager also detects only that old marker by interface name. #281 integration needs to preserve rejection coverage for old/new preview facets while retaining stable core's dependency floor. This is recorded as a prerequisite, not worked around by skipping tests or raising all dependencies.

    No external Event Hubs broker or Azure storage restart was exercised. Final acceptance and compatibility claims remain pending prerequisite snapshots and the full integrated matrix. No #283/#284 adoption, merge or release is authorized in this task.

  3. egil commented on Oct 5, 2026

    @egil
    OwnerAuthor

    Issue #281 follow-up after the maintainer's new compatibility decision: PR #287 will require Orleans 10.4 consistently and preserve only the persisted-data replay fixtures from 10.3.1-alpha.1. The old runtime-support assumption is revoked.

    Please keep the shared centralized dependency upgrade owned by #285 / PR #286. #281 will remove its package-specific VersionOverride entries and update its docs/PR claims to the single 10.4 minimum. For local verification, I will apply all centralized 10.4 stable pins in the owned worktree without committing that shared dependency file unless an integrated #285 snapshot is available. Final integrated package/runtime proof belongs to #285. The #281 Journaling pin remains 10.4.0-alpha.1.

    #285 also identified StateManager's old IJournaledState marker/rejection test as incompatible with the new preview. With the minimum now 10.4, that guard/test must recognize IStateMachine; this is a shared/core #285 change, not a 10.3 compatibility shim. No #283/#284 work is included.

  4. changed the title [-]build(om): validate Orleans 10.4 while preserving stable core compatibility[/-] [+]build(om): upgrade all OM packages consistently to Orleans 10.4[/+] on Oct 5, 2026
  5. egil commented on Oct 5, 2026

    @egil
    OwnerAuthor

    Uniform 10.4 local restore succeeded for #281, but Release compilation exposes two shared-core CS0419 errors in Outboxes/IOutboxGrain.cs at lines 5 and 19: cref IRemindable.ReceiveReminder is ambiguous because 10.4 adds the cancellation overload. Please include explicit cref overload signatures in the #285 shared upgrade. This is documentation disambiguation, not optional #283 cancellation adoption. I will apply the same temporary disambiguation locally to validate #281 while retaining #285 ownership.

  6. egil commented on Oct 5, 2026

    @egil
    OwnerAuthor

    PR #287 is updated at 96f8aa8 for the new uniform Orleans 10.4 decision. All package-specific VersionOverride entries are removed; docs explicitly require consumers to upgrade. Old journals remain only as persisted-data recovery fixtures.

    Shared centralized stable pins, IOutboxGrain reminder-cref disambiguation, and the conventional StateManager IStateMachine facet guard/rejection test remain owned by #285/PR #286. #287 now explicitly depends on that work and is not independently merge-ready.

    Local integration overlay applying those three shared prerequisites passed all 964 tests (53 Journaling), warning-free Release build, and four-package pack. Package inspection confirms uniform 10.4 stable dependencies, Journaling10.4.0-alpha.1, and private SDK tooling. Shared files were restored afterward. This is overlay evidence; final exact integrated-head and packed-consumer proof remains #285 responsibility. Updated-head Standards and Spec reviews have no findings. Please integrate this new #281 commit rather than the superseded ecf71de snapshot.

  7. egil commented on Oct 5, 2026

    @egil
    OwnerAuthor

    Journaling #281 is now stacked on verified shared ref 7b104be. PR #287 base is egil/om-orleans-compatibility; owned tip is 1c4459c. Since the base already includes the original reviewed Journaling implementation, the owned delta is only three documentation corrections; no source/tests are dropped. You can apply this single docs commit without replaying the old migration.

    Actual exact-head verification passes: 970 discovered tests (831 core,53 Journaling,38 EventHubs,42 Azure,3+3 consumers), no skips; warning-free Release build and aligned four-package pack. All resolved Orleans stable libraries are10.4.0/Journaling10.4.0-alpha.1. Both owned-diff review axes have no findings.

    This count is970 at this snapshot rather than the reported978 preliminary count; please use actual final discovery counts in integrated evidence. Final packed-consumer proof, broader inherited README compatibility sections (currently still describe10.3/10.4 support), shared scripts, and revised EventHubs snapshot remain owned by#285. No temporary overlay remains; working tree clean. Draft only, no merge/release.

  8. egil commented on Oct 5, 2026

    @egil
    OwnerAuthor

    Superseding acceptance record for the revised uniform Orleans 10.4 mandate: draft PR #286 is updated at 63f2664ef304488efe1a16a291cfa28fbcc5ac77. All stable packages require 10.4.0; preview Journaling requires 10.4.0-alpha.1. Required #287/#288 snapshots are integrated. Optional #283/#284 remain deferred.

    Final head: Release build has zero warnings/errors; 979 source tests and 979 fresh packed-consumer tests pass; all four NuGet packages validate. Consumer receipts verify dependency graphs and actual DLL hashes. Standards and Spec reviews have no remaining implementation findings. Squash merge is required to exclude superseded branch commit guidance from release notes.

    Acceptance is limited to the covered in-process cluster, persisted-fixture, and provider-adapter scenarios. Live Event Hubs pulling-agent/prefetch/shutdown recovery, external Azure durable restart, and production journal backend evidence remain outstanding. No merge or release performed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions