Download Latest Version v10.4.0 source code.zip (20.3 MB) Google Add to Preferred Sources
Home / v10.3.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-08-27 55.2 kB
v10.3.0 source code.tar.gz 2026-08-27 15.9 MB
v10.3.0 source code.zip 2026-08-27 18.8 MB
Totals: 3 Items   34.8 MB 0

Orleans 10.3.0

Orleans 10.3.0 expands the platform across clustering, streaming, persistence, integrations, serialization, and developer tooling while delivering a broad reliability and performance pass. Major outcomes include stronger distributed-directory and membership behavior, new streaming and storage providers, hardened transactions and durable jobs, incremental source generation, safer JSON storage deserialization, and new application templates. Alongside these features and fixes, the release optimizes key runtime paths, comprehensively refreshes the docs, strengthens testing and CI, and updates dependencies and repository maintenance.

Compatibility notes

[!IMPORTANT] Review these changes before upgrading. This release contains three intentionally behavior-changing updates.

  • Default JSON storage serializer type allow-list (#10268). The default Newtonsoft.Json-based Orleans storage serializer now resolves $type metadata only for types permitted by Orleans' configured type filters and manifest. Existing wire data remains readable when its types are allowed; [GenerateSerializer] types and standard permitted BCL types continue to work without changes. If persisted, streamed, or transactional JSON contains other types, reads now fail with an actionable JsonSerializationException. Prefer registering those types through TypeManifestOptions.AllowedTypes, [GenerateSerializer], ITypeNameFilter, or ITypeFilter; OrleansJsonSerializerOptions.AllowAllTypes = true restores the former permissive JSON behavior when a narrowly scoped allow-list is not practical.
  • Updated RPC semantic convention keys (#10354). Orleans activities now emit the current OpenTelemetry RPC key rpc.system.name; Orleans-specific service, target, and source metadata move to orleans.rpc.service, orleans.rpc.target_id, and orleans.rpc.source_id. The runtime-side rpc.method value is now qualified as <interface>/<method>, and affected ActivitySource versions are incremented. Update dashboards, alerts, collectors, and queries which depend on the legacy rpc.system, rpc.service, rpc.orleans.target_id, or rpc.orleans.source_id keys or the previous method value.
  • Grain context configured before construction (#10565). Orleans now deterministically applies IConfigureGrainContext actions before grain construction, so constructors can observe fully configured context state. Custom IGrainContextActivator implementations must migrate from CreateContext(GrainAddress) to CreateContext(GrainAddress, IConfigureGrainContext[]) and apply the supplied configurators before constructing the grain. Stateless-worker configurators continue to apply to the outer stateless-worker context.

Highlights

Runtime, clustering & resilience

Streaming

  • New AWS Kinesis support, SQS data adapters with FIFO support, Event Hubs Aspire integration, grain-backed checkpointing, and generalized Azure Table checkpointing broaden deployment choices (#8967, #8723, #9328, #10345, #10355).
  • Persistent streams now flow cancellation; stateless workers can consume streams; Azure Queue migration supports compact JSON; and stream telemetry includes richer tags (#10383, #10657, #10507, #8631).
  • Redis implicit subscriptions, SQL Server queue commits, ADO.NET handoffs, batched acknowledgements, implicit rewind handling, and memory/Event Hubs hot paths were hardened or optimized (#10423, #10572, #10536, #10574, #10655, #10662, #10550, #10767).

Storage, persistence, journaling, durable jobs & transactions

  • New Azure Table and Redis journal providers, DynamoDB transactional storage, file-based grain storage, and a System.Text.Json grain storage serializer expand persistence options (#10254, #9823, #9616, #9537, #10806, #9505).
  • Transactions receive extensive conflict, recovery, retry, isolation, cancellation, and diagnostics hardening across providers (#10372, #10376, #10382, #10375, #10374, #10385, #10545, #10743).
  • Persistent state is now concurrency-safe and cancellation-aware, while journaling snapshot operations and durable-job retry/rescheduling semantics are more robust (#10255, #10641, #10800, #10681, #10349, #10547, #10716, #10679).

Providers & integrations

  • Google Cloud Firestore providers, Cosmos DB custom document IDs and partition keys, ADO.NET DbDataSource support, and improved Azure, ZooKeeper, Redis, NATS, and relational-provider behavior extend and stabilize integrations (#8462, #8699, #10326, #10429, #10381, #10437, #10835, #10422, #10505, #10276).
  • SQL Server, PostgreSQL, and MySQL clustering add the missing defunct-silo cleanup query (#8811, #9125, #8896).

Serialization, code generation & analyzers

  • The source generator is now incremental, generates provider metadata at build time, avoids runtime provider scanning, and supports record-parameter field IDs and custom grain-call return types (#10035, #10493, #10566, #10495, #10682).
  • Serialization reduces codec and buffer allocations, adds type/assembly allow-list helpers, and clarifies type-trust configuration (#10301, #10340, #10668, #10228, #10424).
  • Analyzers detect RPC contract changes and provide improved diagnostic guidance (#10337, #10832).

Developer experience, templates, samples & docs

  • New Orleans application templates and a basic clustering sample make it easier to start and validate applications (#10646, #10690, #10622).
  • Connection middleware abstractions and framing helpers provide new transport extension points (#10136, #10433).
  • The docs were comprehensively reorganized and modernized across onboarding, architecture, grains, hosting, operations, security, observability, persistence, streaming, testing, deployment, migration, and production guidance (#10331, #10332, #10334, #10335, #10327, #10328, #10333, #10330, #10336, #10329, #10675, #10746).
  • Test infrastructure moved to xUnit v3 and Microsoft.Testing.Platform, with provider conformance kits, published test results, coverage reporting, and extensive reliability improvements (#10722, #10726, #10490, #10785, #10730, #10733, #10842, #10438, #10738).

Detailed changelog

Every change from the autogenerated changelog is listed once below.

Runtime, clustering, reminders & resilience (34) * fix(reminders): prevent ticks after unregister by @ReubenBond in https://github.com/dotnet/orleans/pull/10296 * fix: eliminate rebalancer waiter timeout race by @ReubenBond in https://github.com/dotnet/orleans/pull/10311 * fix(directory): support rolling upgrades to distributed directory by @ReubenBond in https://github.com/dotnet/orleans/pull/10309 * fix: clean up rebalancer diagnostic waiters by @ReubenBond in https://github.com/dotnet/orleans/pull/10313 * perf(reminders): drop reminders that are not due soon by @ReubenBond in https://github.com/dotnet/orleans/pull/10259 * perf: cache compatible placement silos by @ReubenBond in https://github.com/dotnet/orleans/pull/10314 * fix(directory): cancel snapshot pulls from departed silos by @ReubenBond in https://github.com/dotnet/orleans/pull/10318 * fix(directory): make rolling upgrade handoffs durable by @ReubenBond in https://github.com/dotnet/orleans/pull/10323 * fix: scope reminder test clock to reminder service by @ReubenBond in https://github.com/dotnet/orleans/pull/10317 * feat(directory): add cancellation-aware operations by @ReubenBond in https://github.com/dotnet/orleans/pull/10339 * fix(directory): stabilize rolling upgrade handoff test by @ReubenBond in https://github.com/dotnet/orleans/pull/10341 * perf(runtime): reduce activation collection sorting allocations by @ReubenBond in https://github.com/dotnet/orleans/pull/10342 * fix(directory): strengthen single-activation guarantees by @ledjon-behluli in https://github.com/dotnet/orleans/pull/9958 * fix(telemetry)!: update RPC semantic convention keys by @rkargMsft in https://github.com/dotnet/orleans/pull/10354 * fix(reminders): recover exact-due persisted reminders by @ReubenBond in https://github.com/dotnet/orleans/pull/10430 * fix(directory): arm lease retry before notification by @ReubenBond in https://github.com/dotnet/orleans/pull/10447 * feat(membership): add connection liveness check for fault detection by @ReubenBond in https://github.com/dotnet/orleans/pull/9978 * fix(directory): refresh stale lookup ownership by @ReubenBond in https://github.com/dotnet/orleans/pull/10500 * feat(membership): retain local health history by @ReubenBond in https://github.com/dotnet/orleans/pull/10502 * fix(directory): preserve newer recovery registrations by @ReubenBond in https://github.com/dotnet/orleans/pull/10533 * feat(membership): adapt probe timeouts by @ReubenBond in https://github.com/dotnet/orleans/pull/10510 * fix(runtime)!: configure grain context before construction by @ReubenBond in https://github.com/dotnet/orleans/pull/10565 * fix(runtime): preserve rebalancer state on shutdown by @ReubenBond in https://github.com/dotnet/orleans/pull/10573 * fix(runtime): publish local shutdown membership state by @ReubenBond in https://github.com/dotnet/orleans/pull/10596 * fix(runtime): synchronize version selector cache generations by @ReubenBond in https://github.com/dotnet/orleans/pull/10597 * refactor(runtime): centralize placement compatibility caching by @ReubenBond in https://github.com/dotnet/orleans/pull/10599 * fix(runtime): refresh stale empty directory views by @ReubenBond in https://github.com/dotnet/orleans/pull/10625 * fix(reminders): reconcile stale-owner registrations by @ReubenBond in https://github.com/dotnet/orleans/pull/10612 * fix(rebalancing): honor latest suspension duration by @ReubenBond in https://github.com/dotnet/orleans/pull/10614 * fix(directory): wait for active membership during startup by @ReubenBond in https://github.com/dotnet/orleans/pull/10613 * fix(resilience): add grain placement resilience policies by @ReubenBond in https://github.com/dotnet/orleans/pull/9819 * feat(membership): detect local stalls during direct probes by @ReubenBond in https://github.com/dotnet/orleans/pull/9979 * fix(reminders): always start the first retry attempt by @ReubenBond in https://github.com/dotnet/orleans/pull/10819 * fix(reminders): decouple reconciliation barrier from scheduler by @ReubenBond in https://github.com/dotnet/orleans/pull/10838
Streaming (21) * feat(streaming): make SequentialItem serializable by @ReubenBond in https://github.com/dotnet/orleans/pull/10302 * feat(streaming): add telemetry tags to stream metrics by @oising in https://github.com/dotnet/orleans/pull/8631 * refactor(streaming): remove unused implicit subscriber grain factory by @ReubenBond in https://github.com/dotnet/orleans/pull/10322 * feat(streaming): add grain-backed stream checkpointer by @ReubenBond in https://github.com/dotnet/orleans/pull/10345 * feat(streaming): generalize Azure Table checkpointer by @ReubenBond in https://github.com/dotnet/orleans/pull/10355 * feat(streaming): flow cancellation through persistent streams by @ReubenBond in https://github.com/dotnet/orleans/pull/10383 * feat(streaming): add AWS Kinesis streaming provider by @dpbevin in https://github.com/dotnet/orleans/pull/8967 * fix(streaming): restore Redis implicit subscriptions by @ReubenBond in https://github.com/dotnet/orleans/pull/10423 * fix(adonet): avoid SQL stream confirmation deadlocks by @ReubenBond in https://github.com/dotnet/orleans/pull/10527 * fix(streaming): preserve ADO.NET dequeue order by @ReubenBond in https://github.com/dotnet/orleans/pull/10536 * perf(streaming): avoid copying memory stream payloads by @ReubenBond in https://github.com/dotnet/orleans/pull/10550 * fix(streaming): serialize SQL Server queue commits by @ReubenBond in https://github.com/dotnet/orleans/pull/10572 * fix(streaming): improve implicit-only subscription guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10623 * feat(streaming): support compact JSON Azure Queue migration by @ReubenBond in https://github.com/dotnet/orleans/pull/10507 * fix(streaming): release ADO.NET messages during queue handoff by @ReubenBond in https://github.com/dotnet/orleans/pull/10574 * fix(streaming): defer acknowledgements for batched delivery by @ReubenBond in https://github.com/dotnet/orleans/pull/10655 * feat(streaming): support stateless worker consumers by @ReubenBond in https://github.com/dotnet/orleans/pull/10657 * feat(streaming): add SQS data adapters and FIFO support by @jamescarter-le in https://github.com/dotnet/orleans/pull/8723 * perf: optimize EventHub cache mapping by @ReubenBond in https://github.com/dotnet/orleans/pull/10767 * feat(streaming): add Event Hubs Aspire support by @jsedlak in https://github.com/dotnet/orleans/pull/9328 * fix(streaming): reject active implicit rewinds by @ReubenBond in https://github.com/dotnet/orleans/pull/10662
Storage, persistence, journaling, durable jobs & transactions (26) * Add Azure Table journal storage provider by @danielmeza in https://github.com/dotnet/orleans/pull/10254 * feat(cosmos): add configuration support for grain storage by @ReubenBond in https://github.com/dotnet/orleans/pull/10326 * fix(durablejobs): preserve job state across retries by @ReubenBond in https://github.com/dotnet/orleans/pull/10349 * feat: add DynamoDB transactional storage provider by @scalalang2 in https://github.com/dotnet/orleans/pull/9616 * fix(dynamodb): harden transactional storage conflicts by @ReubenBond in https://github.com/dotnet/orleans/pull/10372 * fix(transactions): harden Azure Table transactional state storage by @ReubenBond in https://github.com/dotnet/orleans/pull/10376 * fix(transactions): harden confirmation recovery handling by @ReubenBond in https://github.com/dotnet/orleans/pull/10382 * fix(transactions): isolate failed storage writes by @ReubenBond in https://github.com/dotnet/orleans/pull/10375 * fix(transactions): improve recovery liveness and diagnostics by @ReubenBond in https://github.com/dotnet/orleans/pull/10374 * fix(transactions): retry TOC verification after transient abort by @ReubenBond in https://github.com/dotnet/orleans/pull/10385 * feat(journaling): add Redis journal storage provider by @jaironalves in https://github.com/dotnet/orleans/pull/9823 * fix(transactions): stabilize recovery observer gate tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10401 * fix(transactions): scope storage fault injection by @ReubenBond in https://github.com/dotnet/orleans/pull/10545 * fix(durablejobs): preserve shard execution failures by @ReubenBond in https://github.com/dotnet/orleans/pull/10547 * fix(persistence): use a stable hash to pick the memory storage grain by @bknote71 in https://github.com/dotnet/orleans/pull/10617 * fix(persistence): flow grain storage cancellation tokens by @ReubenBond in https://github.com/dotnet/orleans/pull/10641 * fix(persistence): make persistent state operations concurrency-safe by @ReubenBond in https://github.com/dotnet/orleans/pull/10255 * feat(storage): add System.Text.Json grain storage serializer by @willg1983 in https://github.com/dotnet/orleans/pull/9505 * feat(durable-jobs): support successful rescheduling by @ReubenBond in https://github.com/dotnet/orleans/pull/10716 * fix(transactions): release locks when cancel precedes prepare by @ReubenBond in https://github.com/dotnet/orleans/pull/10743 * fix(journaling): await recovery before reporting write conflicts by @ReubenBond in https://github.com/dotnet/orleans/pull/10739 * feat: add file-based grain storage provider by @BernhardPollerspoeck in https://github.com/dotnet/orleans/pull/9537 * fix(journaling): preserve snapshot reference scopes by @ReubenBond in https://github.com/dotnet/orleans/pull/10800 * refactor(runtime): include file grain storage by @ReubenBond in https://github.com/dotnet/orleans/pull/10806 * fix(journaling): make snapshot commits and rollback atomic by @ReubenBond in https://github.com/dotnet/orleans/pull/10681 * feat(durable-jobs): add grain-scoped feature handlers by @ReubenBond in https://github.com/dotnet/orleans/pull/10679
Providers & integrations (12) * feat(cosmos): support custom document IDs and partition keys by @ReubenBond in https://github.com/dotnet/orleans/pull/8699 * fix(azure): fence paginated membership reads by @ReubenBond in https://github.com/dotnet/orleans/pull/10381 * feat(google): add Google Cloud Firestore providers by @galvesribeiro in https://github.com/dotnet/orleans/pull/8462 * Add missing query CleanupDefunctSiloEntriesKey to SQLServer clustering by @m3nax in https://github.com/dotnet/orleans/pull/8811 * Add missing query CleanupDefunctSiloEntriesKey to PostgreSQL-Clustering by @tomaszstrejczek in https://github.com/dotnet/orleans/pull/9125 * Add missing query CleanupDefunctSiloEntriesKey to MySQL-Clustering by @juan-arias in https://github.com/dotnet/orleans/pull/8896 * fix(cosmos): continue reminder queries after empty pages by @vladrai in https://github.com/dotnet/orleans/pull/10276 * fix(nats): preserve request context value types by @ReubenBond in https://github.com/dotnet/orleans/pull/10422 * feat(adonet): support DbDataSource by @ReubenBond in https://github.com/dotnet/orleans/pull/10429 * fix(zookeeper): tolerate transient connection loss by @ReubenBond in https://github.com/dotnet/orleans/pull/10437 * fix(adonet): prevent provider query races by @ReubenBond in https://github.com/dotnet/orleans/pull/10505 * perf(redis): avoid serializing addresses during unregister by @ReubenBond in https://github.com/dotnet/orleans/pull/10835
Serialization, code generation & analyzers (15) * fix(serialization): defer interface collection codec dependencies by @ReubenBond in https://github.com/dotnet/orleans/pull/10301 * perf(codegen): migrate to incremental source generator by @ReubenBond in https://github.com/dotnet/orleans/pull/10035 * fix(serialization)!: enforce type allow-list in default JSON storage serializer by @ReubenBond in https://github.com/dotnet/orleans/pull/10268 * feat(serialization): add type and assembly allow-list helpers by @ReubenBond in https://github.com/dotnet/orleans/pull/10228 * fix(serialization): cap codec allocations by @ReubenBond in https://github.com/dotnet/orleans/pull/10340 * fix(codegen): release cached Roslyn symbols by @ReubenBond in https://github.com/dotnet/orleans/pull/10426 * fix(serialization): clarify type trust configuration by @ReubenBond in https://github.com/dotnet/orleans/pull/10424 * feat(codegen): support record parameter field ids by @ReubenBond in https://github.com/dotnet/orleans/pull/10495 * feat(analyzers): detect RPC contract changes by @ReubenBond in https://github.com/dotnet/orleans/pull/10337 * perf(codegen): generate provider metadata at build time by @ReubenBond in https://github.com/dotnet/orleans/pull/10493 * perf(codegen): avoid runtime provider scanning by @ReubenBond in https://github.com/dotnet/orleans/pull/10566 * perf(serialization): grow memory stream buffers geometrically by @ReubenBond in https://github.com/dotnet/orleans/pull/10668 * fix(codegen): use test host framework references by @ReubenBond in https://github.com/dotnet/orleans/pull/10691 * feat(codegen): support custom grain-call return types by @ReubenBond in https://github.com/dotnet/orleans/pull/10682 * feat(analyzers): improve diagnostic guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10832
Developer experience, templates & samples (4) * feat: add connection middleware abstractions and framing helpers by @wenwangcode in https://github.com/dotnet/orleans/pull/10136 * feat(samples): add basic clustering sample by @ReubenBond in https://github.com/dotnet/orleans/pull/10622 * feat(templates): add Orleans application templates by @ReubenBond in https://github.com/dotnet/orleans/pull/10646 * fix(templates): use shipped Orleans package version by @ReubenBond in https://github.com/dotnet/orleans/pull/10690
Documentation (89) * docs: require conventional commit format for PR titles by @ReubenBond in https://github.com/dotnet/orleans/pull/10310 * docs: add Orleans 10 migration guides by @ReubenBond in https://github.com/dotnet/orleans/pull/10329 * docs: modernize deployment and operations guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10327 * docs: modernize grain programming guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10334 * fix(docs): correct timer migration link by @ReubenBond in https://github.com/dotnet/orleans/pull/10347 * docs: modernize security and observability guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10328 * docs: restore migration reference links by @ReubenBond in https://github.com/dotnet/orleans/pull/10352 * docs: restore authoritative grain references by @ReubenBond in https://github.com/dotnet/orleans/pull/10353 * docs: modernize hosting and configuration guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10335 * docs: expand Orleans architecture documentation by @ReubenBond in https://github.com/dotnet/orleans/pull/10332 * docs: modernize Orleans onboarding by @ReubenBond in https://github.com/dotnet/orleans/pull/10331 * docs: modernize state and durability guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10333 * docs: modernize Orleans streaming guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10330 * docs: reorganize Orleans documentation navigation by @ReubenBond in https://github.com/dotnet/orleans/pull/10336 * docs: restore durability operational contracts by @ReubenBond in https://github.com/dotnet/orleans/pull/10366 * docs: restore activation delay semantics by @ReubenBond in https://github.com/dotnet/orleans/pull/10359 * docs: restore Consul membership internals by @ReubenBond in https://github.com/dotnet/orleans/pull/10362 * docs: restore response streaming guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10367 * docs: restore Orleans testing guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10364 * docs: restore custom placement examples by @ReubenBond in https://github.com/dotnet/orleans/pull/10369 * docs: restore TLS certificate loading guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10360 * docs: restore legacy Orleans 10 migration context by @ReubenBond in https://github.com/dotnet/orleans/pull/10361 * docs: restore stateless worker streaming limitation by @ReubenBond in https://github.com/dotnet/orleans/pull/10365 * docs: restore Orleans Hello World onboarding by @ReubenBond in https://github.com/dotnet/orleans/pull/10363 * docs: restore virtual actor design context by @ReubenBond in https://github.com/dotnet/orleans/pull/10368 * docs: restore safe grain call filter examples by @ReubenBond in https://github.com/dotnet/orleans/pull/10371 * docs(transactions): clarify storage recovery contract by @ReubenBond in https://github.com/dotnet/orleans/pull/10377 * docs: require docs and samples review by @ReubenBond in https://github.com/dotnet/orleans/pull/10386 * docs: enforce Conventional Commit PR titles during reviews by @ReubenBond in https://github.com/dotnet/orleans/pull/10387 * docs: define documentation types and expectations by @ReubenBond in https://github.com/dotnet/orleans/pull/10394 * docs: safely identify each contributor's fork remote by @ReubenBond in https://github.com/dotnet/orleans/pull/10395 * docs(test): add flaky test reliability guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10397 * fix(docs): render rich markdown content by @ReubenBond in https://github.com/dotnet/orleans/pull/10398 * docs: clarify contributor PR branch pushes by @ReubenBond in https://github.com/dotnet/orleans/pull/10425 * docs: point package README links at the Orleans docs site by @ReubenBond in https://github.com/dotnet/orleans/pull/10396 * docs: improve Orleans Aspire integration documentation by @Meir017 in https://github.com/dotnet/orleans/pull/10344 * docs: add connection middleware guide by @wenwangcode in https://github.com/dotnet/orleans/pull/10433 * build(docs): enforce Orleans 10 documentation quality by @ReubenBond in https://github.com/dotnet/orleans/pull/10356 * docs: document running distributed tests locally by @ReubenBond in https://github.com/dotnet/orleans/pull/10555 * docs: fix grain service client registration by @ReubenBond in https://github.com/dotnet/orleans/pull/10552 * docs: clarify client lifetime and reconnect guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10581 * fix(docs): use native Orleans API links by @ReubenBond in https://github.com/dotnet/orleans/pull/10564 * docs: update stale NGINX external link by @ReubenBond in https://github.com/dotnet/orleans/pull/10584 * docs: improve contributor onboarding by @ReubenBond in https://github.com/dotnet/orleans/pull/10592 * docs: clarify generic host shutdown by @ReubenBond in https://github.com/dotnet/orleans/pull/10582 * docs(streaming): document external integrations by @ReubenBond in https://github.com/dotnet/orleans/pull/10594 * docs(reminders): clarify reminder timing constraints by @ReubenBond in https://github.com/dotnet/orleans/pull/10580 * docs: clarify observer vs stream guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10579 * docs: document explicit grain deactivation and idle collection by @ReubenBond in https://github.com/dotnet/orleans/pull/10578 * docs(adonet): clarify production database configuration by @ReubenBond in https://github.com/dotnet/orleans/pull/10593 * docs: clarify custom grain storage contract by @ReubenBond in https://github.com/dotnet/orleans/pull/10590 * fix(docs): redirect legacy Orleans tutorials by @ReubenBond in https://github.com/dotnet/orleans/pull/10619 * docs(persistence): clarify default provider registration by @ReubenBond in https://github.com/dotnet/orleans/pull/10629 * docs: document multi-host container networking by @ReubenBond in https://github.com/dotnet/orleans/pull/10607 * docs(streaming): add custom queue adapter guide by @ReubenBond in https://github.com/dotnet/orleans/pull/10591 * fix(docs): isolate parallel snippet build outputs by @ReubenBond in https://github.com/dotnet/orleans/pull/10611 * docs: add Orleans scenarios and use cases guide by @ReubenBond in https://github.com/dotnet/orleans/pull/10603 * docs: clarify garbage collection configuration by @ReubenBond in https://github.com/dotnet/orleans/pull/10606 * docs: explain grain balancing and scaling by @ReubenBond in https://github.com/dotnet/orleans/pull/10604 * docs(streaming): explain Event Hubs slow-consumer pressure by @ReubenBond in https://github.com/dotnet/orleans/pull/10628 * docs: consolidate operational and security guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10554 * docs: document Orleans metrics monitoring guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10605 * docs: show UseOrleans host configuration by @ReubenBond in https://github.com/dotnet/orleans/pull/10647 * docs: publish machine-readable Markdown by @ReubenBond in https://github.com/dotnet/orleans/pull/10656 * docs: add grain unit-testing guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10644 * docs(streaming): document data adapters by @ReubenBond in https://github.com/dotnet/orleans/pull/10645 * fix(docs): preserve angle brackets in code by @ReubenBond in https://github.com/dotnet/orleans/pull/10658 * fix(docs): preserve code without markdown parser by @ReubenBond in https://github.com/dotnet/orleans/pull/10660 * docs: add Markdown navigation overview by @ReubenBond in https://github.com/dotnet/orleans/pull/10659 * docs(streaming): resolve stateless worker subscription guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10654 * fix(docs): redirect obsolete running application guide by @ReubenBond in https://github.com/dotnet/orleans/pull/10673 * docs: clarify production deployment walkthrough by @ReubenBond in https://github.com/dotnet/orleans/pull/10677 * docs(streaming): clarify unsubscribe lifecycle by @ReubenBond in https://github.com/dotnet/orleans/pull/10676 * docs(operations): add production cluster runbook guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10675 * docs: document cluster membership API by @ReubenBond in https://github.com/dotnet/orleans/pull/10701 * fix(docs): redirect legacy GitHub Pages routes by @ReubenBond in https://github.com/dotnet/orleans/pull/10718 * docs: add advanced serialization codegen guide by @ReubenBond in https://github.com/dotnet/orleans/pull/10715 * docs: link grain unit-testing guidance by @ReubenBond in https://github.com/dotnet/orleans/pull/10674 * docs(reminders): document DynamoDB configuration by @ReubenBond in https://github.com/dotnet/orleans/pull/10711 * docs: revise Orleans landing page by @ReubenBond in https://github.com/dotnet/orleans/pull/10724 * fix(docs): preserve reminder sidebar links by @ReubenBond in https://github.com/dotnet/orleans/pull/10725 * docs: split grain timers and reminders into focused pages by @ReubenBond in https://github.com/dotnet/orleans/pull/10745 * docs(reminders): clarify loading-window scalability by @ReubenBond in https://github.com/dotnet/orleans/pull/10737 * docs: document Orleans Journaling by @ReubenBond in https://github.com/dotnet/orleans/pull/10749 * docs: remove redundant maintenance labels by @ReubenBond in https://github.com/dotnet/orleans/pull/10753 * docs: add long-running reminder recipe by @ReubenBond in https://github.com/dotnet/orleans/pull/10752 * docs: add deployment guides for supported hosting targets by @ReubenBond in https://github.com/dotnet/orleans/pull/10746 * fix(docs): remove recovered NuGet links from allowlist by @ReubenBond in https://github.com/dotnet/orleans/pull/10818 * test(docs): isolate linear link scan regression by @ReubenBond in https://github.com/dotnet/orleans/pull/10836
Testing (117) * test: use InProcessTestClusterBuilder in Azure stream reliability tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10222 * test: observe grain directory convergence in liveness tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10299 * fix(testing): track reminder schedules per owner by @ReubenBond in https://github.com/dotnet/orleans/pull/10312 * test: fix grain directory nullability diagnostics by @ReubenBond in https://github.com/dotnet/orleans/pull/10315 * test: wait for grain call before checking cancellation by @ReubenBond in https://github.com/dotnet/orleans/pull/10319 * test(streaming): cover eventhub checkpoint flush on shutdown by @ReubenBond in https://github.com/dotnet/orleans/pull/10321 * fix(testing): wait for async cleanup timer rearm by @ReubenBond in https://github.com/dotnet/orleans/pull/10348 * fix(testing): enforce strict wait deadlines by @ReubenBond in https://github.com/dotnet/orleans/pull/10373 * test: add ambiguous transaction write coverage by @ReubenBond in https://github.com/dotnet/orleans/pull/10379 * test: add transaction storage recovery policy coverage by @ReubenBond in https://github.com/dotnet/orleans/pull/10380 * fix(tests): synchronize timer delay in transactions tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10384 * test: make delayed queue rebalance waits event-driven by @ReubenBond in https://github.com/dotnet/orleans/pull/10211 * test: exercise distributed grain directory in CI by @ReubenBond in https://github.com/dotnet/orleans/pull/10399 * fix(test): make GrainId theories discoverable by @ReubenBond in https://github.com/dotnet/orleans/pull/10404 * fix(tests): initialize Azure shard fixture services by @ReubenBond in https://github.com/dotnet/orleans/pull/10420 * fix(tests): wait for gateways after silo restart by @ReubenBond in https://github.com/dotnet/orleans/pull/10427 * fix(test): enforce async test lifetimes by @ReubenBond in https://github.com/dotnet/orleans/pull/10408 * fix(testing): stabilize reminder diagnostic waiters by @ReubenBond in https://github.com/dotnet/orleans/pull/10421 * test(reminders): make failover tests deterministic by @ReubenBond in https://github.com/dotnet/orleans/pull/10400 * test: repair provider test traits by @ReubenBond in https://github.com/dotnet/orleans/pull/10410 * test: stabilize stream reliability lifecycle waits by @ReubenBond in https://github.com/dotnet/orleans/pull/10226 * test(streaming): retire stale queue balancer skips by @ReubenBond in https://github.com/dotnet/orleans/pull/10417 * fix(tests): surface provider async failures by @ReubenBond in https://github.com/dotnet/orleans/pull/10406 * test(reminders): stabilize Azure Table reminder tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10442 * test: categorize ordinary tests for CI by @ReubenBond in https://github.com/dotnet/orleans/pull/10407 * test(transactions): re-enable GoldenPath coverage by @ReubenBond in https://github.com/dotnet/orleans/pull/10443 * test(streaming): re-enable lease balancer crash recovery by @ReubenBond in https://github.com/dotnet/orleans/pull/10444 * test(reminders): re-enable Azure list operations by @ReubenBond in https://github.com/dotnet/orleans/pull/10446 * test: stabilize concurrent cancellation test by @ReubenBond in https://github.com/dotnet/orleans/pull/10461 * fix(testing): isolate streaming readiness by silo by @ReubenBond in https://github.com/dotnet/orleans/pull/10463 * test(testing): remove final wait timing race by @ReubenBond in https://github.com/dotnet/orleans/pull/10468 * fix(testing): isolate relational storage databases by @ReubenBond in https://github.com/dotnet/orleans/pull/10467 * test: make timed error grain test deterministic by @ReubenBond in https://github.com/dotnet/orleans/pull/10448 * test(azure): stabilize queue visibility test by @ReubenBond in https://github.com/dotnet/orleans/pull/10450 * test: stabilize heterogeneous client refresh by @ReubenBond in https://github.com/dotnet/orleans/pull/10453 * test(reminders): stabilize Azure basic reminder test by @ReubenBond in https://github.com/dotnet/orleans/pull/10456 * test(transactions): make fault injection deterministic by @ReubenBond in https://github.com/dotnet/orleans/pull/10462 * fix(testing): prevent fatal errors from terminating test hosts by @ReubenBond in https://github.com/dotnet/orleans/pull/10438 * test(adonet): fix provider trait coverage by @ReubenBond in https://github.com/dotnet/orleans/pull/10405 * test(streaming): stabilize memory resume startup by @ReubenBond in https://github.com/dotnet/orleans/pull/10466 * test(transactions): await storage recovery before reads by @ReubenBond in https://github.com/dotnet/orleans/pull/10491 * test: stabilize shard overload backoff timing by @ReubenBond in https://github.com/dotnet/orleans/pull/10488 * fix(tests): avoid Coverlet multi-target race by @ReubenBond in https://github.com/dotnet/orleans/pull/10489 * test: migrate tests to Suite/Provider/Area traits by @ReubenBond in https://github.com/dotnet/orleans/pull/10004 * test(adonet): avoid cross-clock timestamp assertions by @ReubenBond in https://github.com/dotnet/orleans/pull/10501 * test: allow full rebalancer suspension duration by @ReubenBond in https://github.com/dotnet/orleans/pull/10486 * test(transactions): accept uninterrupted graceful recovery by @ReubenBond in https://github.com/dotnet/orleans/pull/10514 * test: stabilize multi-grain cancellation by @ReubenBond in https://github.com/dotnet/orleans/pull/10525 * test: stabilize grain directory lease placement by @ReubenBond in https://github.com/dotnet/orleans/pull/10526 * test(reminders): drive exact-due recovery delivery by @ReubenBond in https://github.com/dotnet/orleans/pull/10531 * test(azure): bound table retry budget by @ReubenBond in https://github.com/dotnet/orleans/pull/10534 * test(reminders): await fixture service readiness by @ReubenBond in https://github.com/dotnet/orleans/pull/10535 * test(reminders): re-enable basic list operations by @ReubenBond in https://github.com/dotnet/orleans/pull/10540 * test(transactions): tolerate load-induced consistency timeouts by @ReubenBond in https://github.com/dotnet/orleans/pull/10524 * test(runtime): await manifest before shutdown migration by @ReubenBond in https://github.com/dotnet/orleans/pull/10528 * test(transactions): preserve graceful recovery drain budget by @ReubenBond in https://github.com/dotnet/orleans/pull/10537 * test(streaming): isolate memory batching fixture by @ReubenBond in https://github.com/dotnet/orleans/pull/10542 * fix(testing): align stream provider readiness with assignments by @ReubenBond in https://github.com/dotnet/orleans/pull/10543 * test(transactions): retry transient concurrency aborts by @ReubenBond in https://github.com/dotnet/orleans/pull/10449 * feat(testing): add IGrainStorage provider test kit by @ReubenBond in https://github.com/dotnet/orleans/pull/10490 * test(reminders): synchronize exact-due recovery by @ReubenBond in https://github.com/dotnet/orleans/pull/10563 * fix(test): initialize ADO.NET fixtures asynchronously by @ReubenBond in https://github.com/dotnet/orleans/pull/10560 * test(durable-jobs): synchronize fake-time polling by @ReubenBond in https://github.com/dotnet/orleans/pull/10562 * test(azure): wait for reminder service startup by @ReubenBond in https://github.com/dotnet/orleans/pull/10571 * test(durable-jobs): synchronize receiver completion by @ReubenBond in https://github.com/dotnet/orleans/pull/10585 * test(durable-jobs): align retry wait timeout by @ReubenBond in https://github.com/dotnet/orleans/pull/10586 * test: add model-based storage conformance to the persistence test kit by @ReubenBond in https://github.com/dotnet/orleans/pull/10513 * test(adonet): stabilize SQL Server database resets by @ReubenBond in https://github.com/dotnet/orleans/pull/10589 * fix(tests): allow restart addressing cancellation by @ReubenBond in https://github.com/dotnet/orleans/pull/10636 * test: make membership cleanup tests deterministic by @ReubenBond in https://github.com/dotnet/orleans/pull/10634 * fix(tests): synchronize failed transaction restore by @ReubenBond in https://github.com/dotnet/orleans/pull/10630 * test: stabilize interleaving cancellation test by @ReubenBond in https://github.com/dotnet/orleans/pull/10638 * test(grain-directory): make shutdown migration deterministic by @ReubenBond in https://github.com/dotnet/orleans/pull/10610 * test(runtime): synchronize cancellation callback registration by @ReubenBond in https://github.com/dotnet/orleans/pull/10609 * test(durable-jobs): avoid response timeout in concurrent scheduling by @ReubenBond in https://github.com/dotnet/orleans/pull/10632 * test(reminders): synchronize Cosmos grain-type test by @ReubenBond in https://github.com/dotnet/orleans/pull/10648 * test(runtime): reserve fake gateway port by @ReubenBond in https://github.com/dotnet/orleans/pull/10669 * test(reminders): re-enable multi-grain join test by @ReubenBond in https://github.com/dotnet/orleans/pull/10666 * test(reminders): serialize fixture refreshes by @ReubenBond in https://github.com/dotnet/orleans/pull/10665 * test(runtime): preserve zero-delay cancellation path by @ReubenBond in https://github.com/dotnet/orleans/pull/10664 * test(adonet): await SQL Server session drain by @ReubenBond in https://github.com/dotnet/orleans/pull/10704 * test(runtime): keep one-way observers alive by @ReubenBond in https://github.com/dotnet/orleans/pull/10707 * test: reduce shutdown test timeout by @ReubenBond in https://github.com/dotnet/orleans/pull/10698 * fix(tests): stabilize reminder tick condition test by @ReubenBond in https://github.com/dotnet/orleans/pull/10703 * refactor(testing): decouple persistence test kit from xUnit by @ReubenBond in https://github.com/dotnet/orleans/pull/10692 * test(directory): assert rolling upgrade invariants by phase by @ReubenBond in https://github.com/dotnet/orleans/pull/10705 * fix(testing): scope streaming resume wait deadlines by @ReubenBond in https://github.com/dotnet/orleans/pull/10671 * fix(test): stabilize one-way call completion checks by @ReubenBond in https://github.com/dotnet/orleans/pull/10717 * test(reminders): restore joined silos by @ReubenBond in https://github.com/dotnet/orleans/pull/10709 * refactor(test): migrate to xUnit v3 by @ReubenBond in https://github.com/dotnet/orleans/pull/10722 * build(test): migrate from VSTest to Microsoft.Testing.Platform by @ReubenBond in https://github.com/dotnet/orleans/pull/10726 * fix(testing): make wait deadline tests deterministic by @ReubenBond in https://github.com/dotnet/orleans/pull/10738 * fix(testing): stabilize Event Hubs resume startup by @ReubenBond in https://github.com/dotnet/orleans/pull/10741 * fix(test): retry SQL Server database reset by @ReubenBond in https://github.com/dotnet/orleans/pull/10744 * test(runtime): make duplicate activation stress deterministic by @ReubenBond in https://github.com/dotnet/orleans/pull/10742 * test(durable-jobs): isolate Azure storage per test by @ReubenBond in https://github.com/dotnet/orleans/pull/10740 * fix(test): synchronize manual repartitioning rounds by @ReubenBond in https://github.com/dotnet/orleans/pull/10732 * test: fix ConfirmationWorker retry timer race by @ReubenBond in https://github.com/dotnet/orleans/pull/10768 * test: disable DiffEngine in automated runs by @ReubenBond in https://github.com/dotnet/orleans/pull/10769 * chore(test): align .NET 10 runtime package versions by @ReubenBond in https://github.com/dotnet/orleans/pull/10758 * fix(test): isolate EventSourcing counter perf tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10770 * fix(test): isolate membership completion waits by @ReubenBond in https://github.com/dotnet/orleans/pull/10771 * test(directory): validate split handoff invariants by @ReubenBond in https://github.com/dotnet/orleans/pull/10772 * fix(test): retry SQL Server setup login by @ReubenBond in https://github.com/dotnet/orleans/pull/10774 * test(runtime): keep cancellation observers alive by @ReubenBond in https://github.com/dotnet/orleans/pull/10790 * test(reminders): add provider conformance TestKit by @ReubenBond in https://github.com/dotnet/orleans/pull/10785 * test(directory): defer upgrade invariants until convergence by @ReubenBond in https://github.com/dotnet/orleans/pull/10795 * fix(test): await reminder range reconciliation by @ReubenBond in https://github.com/dotnet/orleans/pull/10794 * fix(test): isolate stateless worker stream deliveries by @ReubenBond in https://github.com/dotnet/orleans/pull/10793 * test(streaming): await subscription cursor drain by @ReubenBond in https://github.com/dotnet/orleans/pull/10792 * test(transactions): synchronize local abort dispatch by @ReubenBond in https://github.com/dotnet/orleans/pull/10791 * fix(test): own SQL Server schema setup connection by @ReubenBond in https://github.com/dotnet/orleans/pull/10803 * fix(test): follow latest reminder reconciliation by @ReubenBond in https://github.com/dotnet/orleans/pull/10815 * fix(test): await ReminderTestKit service startup by @ReubenBond in https://github.com/dotnet/orleans/pull/10813 * test(streaming): cover first production during deactivation by @ReubenBond in https://github.com/dotnet/orleans/pull/10811 * test: remove delays from async executor tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10834 * fix(test): retain SQL Server setup ownership by @ReubenBond in https://github.com/dotnet/orleans/pull/10823
CI, build, dependencies & repository maintenance (34) * ci: enable GitHub autobaseline for nightly-main pipeline by @ReubenBond in https://github.com/dotnet/orleans/pull/10297 * chore(deps): bump dompurify from 3.4.11 to 3.4.12 in /src/Dashboard/Orleans.Dashboard.App by @dependabot[bot] in https://github.com/dotnet/orleans/pull/10303 * refactor: enable nullable reference types across Orleans by @ReubenBond in https://github.com/dotnet/orleans/pull/10291 * chore(deps): bump postcss from 8.5.15 to 8.5.25 in /src/Dashboard/Orleans.Dashboard.App by @dependabot[bot] in https://github.com/dotnet/orleans/pull/10305 * chore(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /docs/site by @dependabot[bot] in https://github.com/dotnet/orleans/pull/10343 * chore(deps): bump mermaid from 11.15.0 to 11.16.1 in /src/Dashboard/Orleans.Dashboard.App by @dependabot[bot] in https://github.com/dotnet/orleans/pull/10350 * chore(deps): bump dompurify from 3.4.12 to 3.4.13 in /src/Dashboard/Orleans.Dashboard.App by @dependabot[bot] in https://github.com/dotnet/orleans/pull/10351 * chore(deps): bump js-yaml from 4.3.0 to 4.3.1 in /docs/site by @dependabot[bot] in https://github.com/dotnet/orleans/pull/10346 * build: validate samples against locally packed Orleans packages by @ReubenBond in https://github.com/dotnet/orleans/pull/10388 * chore: add repository code owners by @ReubenBond in https://github.com/dotnet/orleans/pull/10419 * ci: enforce build and test results by @ReubenBond in https://github.com/dotnet/orleans/pull/10402 * ci: cover omitted maintained tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10416 * fix(ci): include omitted provider tests by @ReubenBond in https://github.com/dotnet/orleans/pull/10403 * fix(ci): wait for SQL Server query readiness by @ReubenBond in https://github.com/dotnet/orleans/pull/10441 * ci: capture SQL Server failure diagnostics by @ReubenBond in https://github.com/dotnet/orleans/pull/10487 * Enable Copilot Knowledge Base by @ReubenBond in https://github.com/dotnet/orleans/pull/10494 * fix(security): remediate repository alerts by @ReubenBond in https://github.com/dotnet/orleans/pull/10516 * Disable Copilot Knowledge Base by @ReubenBond in https://github.com/dotnet/orleans/pull/10517 * ci: add MariaDB registry fallback by @ReubenBond in https://github.com/dotnet/orleans/pull/10559 * fix(dashboard): add ESLint flat configuration by @ReubenBond in https://github.com/dotnet/orleans/pull/10567 * fix(ci): retry transient dashboard npm restores by @ReubenBond in https://github.com/dotnet/orleans/pull/10561 * Update vulnerable SSH.NET and nanoid dependencies by @ReubenBond in https://github.com/dotnet/orleans/pull/10678 * build(deps): bump dotnet-sdk from 10.0.302 to 10.0.400 by @dependabot[bot] in https://github.com/dotnet/orleans/pull/10686 * fix(deps): update Polly.Extensions to 8.6.5 by @ReubenBond in https://github.com/dotnet/orleans/pull/10786 * ci: publish .NET test results on pull requests by @ReubenBond in https://github.com/dotnet/orleans/pull/10730 * fix(ci): publish .NET test results with allowed actions by @ReubenBond in https://github.com/dotnet/orleans/pull/10750 * ci: report code coverage on pull requests by @ReubenBond in https://github.com/dotnet/orleans/pull/10733 * fix(ci): collect coverage during test runs by @ReubenBond in https://github.com/dotnet/orleans/pull/10755 * fix(ci): preserve complete coverage data by @ReubenBond in https://github.com/dotnet/orleans/pull/10787 * [Automated] Update API Surface Area by @github-actions[bot] in https://github.com/dotnet/orleans/pull/10799 * fix(ci): retry transient artifact uploads by @ReubenBond in https://github.com/dotnet/orleans/pull/10837 * fix(ci): retry transient coverage initialization failure by @ReubenBond in https://github.com/dotnet/orleans/pull/10839 * ci: publish Azure Pipelines code coverage by @ReubenBond in https://github.com/dotnet/orleans/pull/10842 * fix(ci): limit coverage to Orleans assemblies by @ReubenBond in https://github.com/dotnet/orleans/pull/10843

New Contributors

Full Changelog: https://github.com/dotnet/orleans/compare/v10.2.2...v10.3.0

Source: README.md, updated 2026-08-27