Skip to content

refactor(runtime): include file grain storage - #10806

Merged
ReubenBond merged 2 commits into
dotnet:mainfrom
ReubenBond:merge-file-storage-runtime
Aug 24, 2026
Merged

ReubenBond merged 2 commits into
dotnet:mainfrom
ReubenBond:merge-file-storage-runtime

Conversation

@ReubenBond

@ReubenBond ReubenBond commented Aug 24, 2026

Copy link
Copy Markdown
Member

Summary

  • compile the file grain storage provider into Microsoft.Orleans.Runtime
  • remove the standalone Microsoft.Orleans.Persistence.FileStorage project and package documentation
  • relocate the provider tests alongside the core test projects and publish the API through the Runtime surface

Rationale

File grain storage is a local, single-silo development and testing capability. Shipping it with the runtime makes it available through the existing server dependency and avoids introducing a separate package for the provider added in #9537.

Microsoft Reviewers: Open in CodeFlow

Copilot AI lite review requested due to automatic review settings August 24, 2026 18:40

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.

Pull request overview

This PR refactors the file-based grain storage provider by moving it into Microsoft.Orleans.Runtime, removing the standalone Microsoft.Orleans.Persistence.FileStorage project/package, relocating tests into the core test set, and exposing the provider via the runtime API surface.

Changes:

  • Added Orleans.Persistence.FileStorage implementation and registration extensions directly to src/Orleans.Runtime.
  • Moved/added conformance + boundary + registration tests under test/Orleans.Persistence.FileStorage.Tests and updated the solution to include them.
  • Updated runtime/package documentation and API surface, and removed docs entries related to the standalone unpublished package.
Show a summary per file
File Description
test/Orleans.Persistence.FileStorage.Tests/RecordingGrainStorageSerializer.cs Adds a test serializer used to validate binary payload round-tripping behavior.
test/Orleans.Persistence.FileStorage.Tests/Orleans.Persistence.FileStorage.Tests.csproj Updates test dependencies to reference Orleans.Runtime now that the provider is compiled into it.
test/Orleans.Persistence.FileStorage.Tests/FileSiloBuilderExtensionsTests.cs Adds coverage for keyed/unkeyed DI registration behavior of the new runtime-hosted provider.
test/Orleans.Persistence.FileStorage.Tests/FileGrainStorageTestFixture.cs Adds a shared fixture and helpers for in-process storage conformance/boundary tests.
test/Orleans.Persistence.FileStorage.Tests/FileGrainStorageOptionsTests.cs Adds validation tests for RootDirectory configuration rules.
test/Orleans.Persistence.FileStorage.Tests/FileGrainStorageConformanceTests.cs Adds conformance tests via the persistence test kit runner.
test/Orleans.Persistence.FileStorage.Tests/FileGrainStorageBoundaryTests.cs Adds boundary/robustness tests for unsafe identities, invalid records, lifecycle behavior, etc.
src/Orleans.Runtime/README.md Documents how to configure file grain storage now that it ships with Microsoft.Orleans.Runtime.
src/Orleans.Runtime/Persistence/FileStorage/FileSiloBuilderExtensions.cs Adds silo/service collection extension methods to register file grain storage.
src/Orleans.Runtime/Persistence/FileStorage/FileGrainStorageOptions.cs Introduces options + configuration validator for the provider.
src/Orleans.Runtime/Persistence/FileStorage/FileGrainStorageFactory.cs Adds DI factory for constructing the provider with named options/cluster options.
src/Orleans.Runtime/Persistence/FileStorage/FileGrainStorage.cs Adds the provider implementation (record format, hashing to filenames, ETag enforcement, lifecycle directory creation).
src/File/Orleans.Persistence.FileStorage/README.md Removes standalone package README (provider is now documented under runtime).
src/File/Orleans.Persistence.FileStorage/Orleans.Persistence.FileStorage.csproj Removes the standalone provider project/package.
src/api/Orleans.Runtime/Orleans.Runtime.cs Publishes the provider API surface via Orleans.Runtime public API.
Orleans.slnx Removes the standalone provider project and relocates provider tests into the core test set.
docs/site/src/data/unpublished-api-packages.json Removes the unpublished package entry for the now-removed standalone package.
docs/site/src/data/external-link-allowlist.json Removes the NuGet allowlist entry for the now-removed standalone package.
docs/site/src/content/docs/resources/nuget-packages.md Updates package listing to point users to Microsoft.Orleans.Runtime for file storage.

Review details

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

  • Files reviewed: 9/19 changed files
  • Comments generated: 0
  • Review effort level: Lite

@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Code coverage

77.56% line coverage - 97,422 / 125,601 lines

Coverage details

Copilot AI review requested due to automatic review settings August 24, 2026 19:40

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.

Review details

  • Files reviewed: 9/19 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@ReubenBond
ReubenBond force-pushed the merge-file-storage-runtime branch from 3df2613 to 61fc2ba Compare August 24, 2026 20:46
@ReubenBond
ReubenBond merged commit 961a9bc into dotnet:main Aug 24, 2026
76 checks passed
@ReubenBond
ReubenBond deleted the merge-file-storage-runtime branch August 24, 2026 21:47
This was referenced Aug 28, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants