Skip to content

fix(om): upgrade all packages consistently to Orleans 10.4 - #286

Merged
egil merged 1 commit into
mainfrom
egil/om-orleans-compatibility
Oct 6, 2026
Merged

egil merged 1 commit into
mainfrom
egil/om-orleans-compatibility

Conversation

@egil

@egil egil commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Summary

All Egil.Orleans.Messaging packages now require Orleans 10.4.0. The preview Journaling integration uses 10.4.0-alpha.1. Consumers must upgrade their host and companion Orleans packages consistently; older Orleans runtimes are not supported by this release.

Orleans 10.4 baseline
  + Journaling contract and recovery migration (#281)
  + enriched Event Hubs token compatibility (#282)
  -> four OM packages, six existing test suites
  -> normal NuGet validation and CI tests
  • Migrate preview Journaling contracts, registration and failure recovery.
  • Preserve Event Hubs checkpoint compatibility across standard, enriched and historical token representations.
  • Align dependencies, test hosts and consumer upgrade documentation.
  • Remove the redundant packed-compatibility script, reference-switching harness, dedicated CI job and associated documentation. NuGet resolves declared dependencies; existing package validation and behavioral/consumer suites remain.

Optional reminder cancellation (#283) and stream start-position controls (#284) remain deferred.

Evidence

At consolidated commit f0087323:

  • Restore and Release build pass with zero warnings and zero errors.
  • All six existing suites pass: 981 succeeded, 0 failed, 0 skipped.
  • No remaining script, reference-switching or compatibility-evidence references; diff whitespace checks pass.
  • Normal CI package creation, NuGet validation and test jobs remain in place.

The tracker registration regression was reproduced before the fix: both unkeyed and named existing-service cases lacked a wildcard registration. Both cases now pass, including repeated setup. The fixture provenance note now distinguishes append operations from compacted state without claiming eviction coverage.

The unrelated STJM workflow repair was moved to #289, merged independently into main, and incorporated by refreshing this branch. It is no longer part of the OM PR diff. Current-head CI is reported in the checks below.

Coverage includes persisted receiver/checkpoint recovery, stream identity and subscription behavior, Event Hubs token serialization/cache recovery, and Journaling recovery. Live Event Hubs broker/pulling-agent handshake, external Azure restart paths and production journal backends still require infrastructure; no NativeAOT claim is made.

Merge Danger

Door: One-way consumer dependency upgrade to Orleans 10.4; preview Journaling contract changes.

Blast Radius: All four OM packages and consuming hosts. Persisted-data compatibility remains required. Application-owned database scripts, dashboards and provider configuration need the documented upgrade review.

The branch has been consolidated to one commit on current main. Its final file tree is identical to the previously validated integrated head; superseded intermediate changes are no longer in the PR history. Merge and release are not authorized by this repair request.

Refs #281, #282, #285.

@egil egil changed the title build(om): verify packed binaries across Orleans versions fix(om): upgrade all packages consistently to Orleans 10.4 Oct 5, 2026
@egil
egil marked this pull request as ready for review October 6, 2026 10:41
Copilot AI balanced review requested due to automatic review settings October 6, 2026 10:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Tracker registration can be incorrectly skipped when an unrelated unkeyed or specifically keyed service already exists.

Review effort: Balanced
Findings: 1 Medium severity · 1 Low severity

Open (2)
What changed in this PR

Upgrades Orleans Messaging to Orleans 10.4 while preserving journal and Event Hubs checkpoint compatibility.

Changes:

  • Migrates Journaling to the 10.4 state-machine APIs and recovery model.
  • Adds Event Hubs token compatibility-domain support.
  • Aligns dependencies, documentation, fixtures, and regression coverage.
File Description
test/​Egil.Orleans.Messaging.Tests/​Streams/​StreamManagerResumeTests.cs Tests restored Event Hubs checkpoints.
test/​Egil.Orleans.Messaging.Tests/​State/​JournaledFacetRejectionTests.cs Updates the Journaling marker contract.
test/​Egil.Orleans.Messaging.Tests/​Outboxes/​OutboxReminderPolicyTests.cs Uses the new reminder overload.
test/​Egil.Orleans.Messaging.Tests/​Outboxes/​OutboxReminderCallbackTests.cs Tests legacy callback forwarding.
test/​Egil.Orleans.Messaging.Tests/​Egil.Orleans.Messaging.Tests.csproj References Event Hubs integration.
test/​Egil.Orleans.Messaging.Streams.EventHubs.Tests/​EventHubs/​EventHubsRecoveryTests.cs Covers cache and token recovery.
test/​Egil.Orleans.Messaging.Streams.EventHubs.Tests/​EventHubs/​EnrichedEventHubSequenceTokenCompatibilityTests.cs Tests cross-token comparison.
test/​Egil.Orleans.Messaging.Journaling.Tests/​RegistrationTests.cs Tests registration and plain grains.
test/​Egil.Orleans.Messaging.Journaling.Tests/​RecoveryTests.cs Covers replay and delete failures.
test/​Egil.Orleans.Messaging.Journaling.Tests/​RecordingJournalStorageProvider.cs Adds read/delete failure simulation.
test/​Egil.Orleans.Messaging.Journaling.Tests/​PlainJournaledGrain.cs Exercises ordinary-grain composition.
test/​Egil.Orleans.Messaging.Journaling.Tests/​OutboxDeltaTests.cs Updates terminal-failure recovery tests.
test/​Egil.Orleans.Messaging.Journaling.Tests/​LegacyJournalTests.cs Verifies old journal replay.
test/​Egil.Orleans.Messaging.Journaling.Tests/​JournalingPrototypeTests.cs Updates hosting and session creation.
test/​Egil.Orleans.Messaging.Journaling.Tests/​JournaledOrderGrain.cs Observes deactivation completion.
test/​Egil.Orleans.Messaging.Journaling.Tests/​Fixtures/​README.md Documents compatibility fixtures.
test/​Egil.Orleans.Messaging.Journaling.Tests/​Fixtures/​10.3.1-snapshot.jsonl Adds legacy snapshot fixture.
test/​Egil.Orleans.Messaging.Journaling.Tests/​Fixtures/​10.3.1-snapshot.expected.json Adds expected snapshot state.
test/​Egil.Orleans.Messaging.Journaling.Tests/​Fixtures/​10.3.1-append.jsonl Adds legacy append fixture.
test/​Egil.Orleans.Messaging.Journaling.Tests/​Fixtures/​10.3.1-append.expected.json Adds expected append state.
test/​Egil.Orleans.Messaging.Journaling.Tests/​Egil.Orleans.Messaging.Journaling.Tests.csproj Copies fixtures to test output.
test/​Egil.Orleans.Messaging.Journaling.Tests/​ActivationCompletions.cs Tracks grain deactivation.
src/​Egil.Orleans.Messaging/​State/​StateManager.cs Detects 10.4 journaled facets.
src/​Egil.Orleans.Messaging/​Outboxes/​IOutboxGrain.cs Clarifies reminder overload docs.
src/​Egil.Orleans.Messaging.Streams.EventHubs/​EventHubs/​EnrichedEventHubSequenceToken.cs Joins the Event Hubs token domain.
src/​Egil.Orleans.Messaging.Journaling/​README.md Documents 10.4 migration and recovery.
src/​Egil.Orleans.Messaging.Journaling/​MessagingJournalingExtensions.cs Registers 10.4 Journaling services.
src/​Egil.Orleans.Messaging.Journaling/​JournaledSnapshot.cs Migrates snapshot state machines.
src/​Egil.Orleans.Messaging.Journaling/​Egil.Orleans.Messaging.Journaling.csproj Adds Orleans SDK tooling.
src/​Egil.Orleans.Messaging.Journaling/​DurableOutbox.cs Migrates outbox state-machine behavior.
src/​Egil.Orleans.Messaging.Journaling/​DurableMessageTracker.cs Uses manager-owned tracker registration.
README.md Adds consumer upgrade guidance.
docs/​eventhubs-token-compatibility.md Documents token compatibility evidence.
Directory.Packages.props Aligns Orleans dependencies to 10.4.
api-design.md Documents journaled composition design.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Copilot AI balanced review requested due to automatic review settings October 6, 2026 10:46

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The tracker registration guard can suppress required keyed registration, and unrelated STJM workflow edits should be separated.

Review effort: Balanced
Findings: 1 Medium severity · 3 Low severity

Open (4)
Previously missed (1)

In code that hasn't changed since last review

Low severity Correct Orleans facet type to JournaledPersistentState<T>

Egil.Orleans.Messaging/​src/​Egil.Orleans.Messaging/​State/​StateManager.cs:613

The updated explanation still names Orleans' facet as DurableState<T> above, but the Orleans 10.4 type linked here is JournaledPersistentState<T>. Use the actual type name so this compatibility guard does not document a removed/incorrect API.

Comment thread .github/workflows/egil-systemtextjson-migration-ci.yml
Comment thread .github/workflows/egil-systemtextjson-migration-ci.yml
Copilot AI balanced review requested due to automatic review settings October 6, 2026 12:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The one-way runtime upgrade and persisted-journal compatibility changes warrant final human approval despite comprehensive coverage.

Review effort: Balanced
Findings: None

Resolved since last review (4)

Copilot AI balanced review requested due to automatic review settings October 6, 2026 14:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The one-way runtime and persisted-journal migration has infrastructure-dependent validation gaps requiring final human review.

Review effort: Balanced
Findings: None

Require Orleans 10.4.0 across OM packages and consuming hosts, with Microsoft.Orleans.Journaling 10.4.0-alpha.1 for the preview integration. Migrate Journaling state-machine registration and recovery while preserving legacy persisted data, and keep enriched Event Hubs tokens compatible with standard provider tokens and cache recovery. Preserve wildcard tracker registration alongside host overrides and custom reminder callback dispatch. Add regression coverage and actionable host upgrade guidance. Retain normal NuGet validation and behavioral consumer suites without an additional compatibility script. The stable packages remain net10.0; consumers must upgrade their Orleans packages consistently.
@egil
egil force-pushed the egil/om-orleans-compatibility branch from c738161 to f008732 Compare October 6, 2026 14:10
@egil
egil merged commit 1984291 into main Oct 6, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants