Skip to content

Releases: dotnet/orleans

v7.2.5

22 Feb 23:51
b7bf45f
Compare
Choose a tag to compare

What's Changed

  • Avoid resending unchanged ClusterManifest to clients by @ReubenBond in #8772
  • Fix PooledBuffer serialization & initialize ActivationMigrationManager on startup by @ReubenBond in #8861
  • Always reset RuntimeContext to previous value after use (#8864) by @ReubenBond in #8870

Full Changelog: v7.2.4...v7.2.5

v8.1.0-preview1

13 Feb 15:58
34f7e0b
Compare
Choose a tag to compare

New features

Integration with Aspire

This release includes initial integration with Aspire Preview 3 and later, allowing you to configure an Orleans cluster in your Aspire app host, specifying the resources the cluster uses. For example, you can specify that an Azure Table will be used for cluster membership, an Azure Redis resource will be used for the grain directory, and an Azure Blob Storage resource will be used to store grain state. The integration currently support Redis and Azure Table & Blob storage resources. Support for other resources will be added later.

In the app host project, an Orleans cluster can be declared using the AddOrleans method, and then configured with clustering, grain storage, grain directory, and other providers using methods on the returned builder:

var storage = builder.AddAzureStorage("storage");
var clusteringTable = storage.AddTables("clustering");
var defaultStorage = storage.AddBlobs("grainstate");
var cartStorage = builder.AddRedis("redis-cart");

var orleans = builder.AddOrleans("my-app")
                     .WithClustering(clusteringTable)
                     .WithGrainStorage("Default", grainStorage)
                     .WithGrainStorage("cart", cartStorage);

// Add a server project (also called "silo")
builder.AddProject<Projects.OrleansServer>("silo")
       .WithReference(orleans);

// Add a project with a reference to the Orleans client
builder.AddProject<Projects.FrontEnd>("frontend")
       .WithReference(orleans);

In the client and server projects, add Orleans to the host builder as usual.

// For an Orleans server:
builder.UseOrleans();

// Or, for an Orleans client:
builder.UseOrleansClient();

Orleans will read configuration created by your Aspire app host project and configure the providers specified therein. To allow Orleans to access the configured resources, add them as keyed services using the corresponding Aspire component:

builder.AddKeyedAzureTableService("clustering");
builder.AddKeyedAzureBlobService("grainstate");
builder.AddKeyedRedis("redis-cart");

Resource-optimized placement

Resource-optimized placement, enabled via the [ResourceOptimizedPlacement] attribute on a grain class, balances grains across hosts based on available memory and CPU usage. For more details, see the PR: #8815.

What's Changed

New Contributors

Full Changelog: v8.0.0...v8.1.0-preview1

v8.0.0

05 Jan 20:28
71b58f4
Compare
Choose a tag to compare

What's Changed Since v7.0.0

Read more

v8.0.0-rc2

20 Dec 20:36
94a83eb
Compare
Choose a tag to compare

Changes from v8.0.0-rc1

  • Prevent PlacementWorker.ProcessLoop from running on foreign schedulers by @ReubenBond in #8760
  • Fix stack deserialization order by @ReubenBond in #8768
  • Ensure that all in-built codecs and copiers have corresponding tests, fix issues found by @ReubenBond in #8769
  • Prevent external codecs from serializing types which are abstract, generated, or from the framework itself by @ReubenBond in #8765
  • Avoid generating IActivator for abstract types by @ledjon-behluli in #8777
  • Avoid sending cluster manifest to client if client already has the latest version by @453873 in #8728
  • ClientClusterManifestProvider: fix case where gateway returns no update by @HermesNew in #8782
  • Use UpDownCounter for grain and system target counts by @Costo in #8781
  • Reduce logging noise from MemoryStorage, InsideRuntimeClient, and LocalGrainDirectory by @ReubenBond in #8780
  • Fix proxy class type name violation on code-gen by @ledjon-behluli in #8785
  • Fixes duplicate code-gen for CompoundTypeAliasTree with isolated base interface(s) by @ledjon-behluli in #8788

New Contributors

Full Changelog: v8.0.0-rc1...v8.0.0-rc2

v8.0.0-rc1

04 Dec 19:48
2e454ae
Compare
Choose a tag to compare

Changes from 7.0.0

Read more

v7.2.4

02 Dec 08:09
Compare
Choose a tag to compare

What's Changed

  • Avoid hiding the stack of exceptions thrown from user code by @ReubenBond in #8706
  • Improve error checking around constructing and parsing generic grain types and clean up tests by @ReubenBond in #8705
  • Fix overread bug in Reader Skip by @JohnMorman in #8709
  • Support Timeout.InfiniteTimeSpan in grain delay deactivation by @nichvolodov in #8711
  • Do not retry membership updates during shutdown with dev clustering by @ReubenBond in #8719
  • Throw if PersistentStateAttribute.StateName is null (#8708) by @ReubenBond in #8718
  • Enable enumeration of the keys and entries in RequestContext (#8674) by @ReubenBond in #8720
  • Fix flaky OneWay_Deactivation_CacheInvalidated test by @ReubenBond in #8721
  • Throw when deserializing Exceptions by reference, and avoid reference tracking for all Exception-derived types (#8628) by @david-obee in #8698
  • Correctly count number of items in LRU by @koenbeuk in #8742
  • Fix exception while collecting activations by @nichvolodov in #8740
  • Identify F# single case discriminated unions as SumType by @gfix in #8739
  • Fix "System.InvalidOperationException: Unable to extract integer key from grain id" at Silo.OnActiveStop (#8558) by @peter-perot in #8701

New Contributors

Full Changelog: v7.2.3...v7.2.4

v7.2.3

03 Nov 20:35
84a1678
Compare
Choose a tag to compare

What's Changed

  • Add value type support to IActivator #8682 by @AdrianoAE in #8683
  • Ensure that ClusterMembershipOptions.NumVotesForDeathDeclaration is not greater than NumProbedSilos on startup by @ReubenBond in #8679
  • Fix regression in CollectionAgeLimitAttribute by @ReubenBond in #8681
  • Prevent progress reversal in cluster membership by @ReubenBond in #8673
  • Ensure that exceptions thrown from Connection tasks are observed by @ReubenBond in #8691
  • Add ILogConsistencyProtocolServices factory for all log consistency providers (#8157) by @ikkentim in #8677
  • Close connection when invalid framing is detected by @ReubenBond in #8692
  • Cosmos DB: allow customization of retry logic by @ReubenBond in #8693
  • Cosmos DB: support custom partition key value providers by @ReubenBond in #8694
  • Improve grain directory cache consistency by @ReubenBond in #8696
  • Cosmos DB: perform read for consistency when deleting state which is expected to not exist by @ReubenBond in #8700
  • Nullify directory entries of defunct local predecessors during grain activation by @ReubenBond in #8704

New Contributors

Full Changelog: v7.2.2...v7.2.3

v7.2.2

16 Oct 17:45
bf0112d
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v7.2.1...v7.2.2

v7.2.1

11 Jul 15:18
edf4183
Compare
Choose a tag to compare

What's Changed

Full Changelog: v7.2.0...v7.2.1

v7.2.0

07 Jul 16:58
ea3372c
Compare
Choose a tag to compare

Release Highlights

  • Redis providers are now marked as stable. Note that there is a breaking change in Redis grain state storage from the beta releases. The break can be avoided using configuration (PRs #8467 & #8487)
  • Cosmos DB providers are now available, special thanks to @galvesribeiro (PR: #7848)
  • Grain methods can now return IAsyncEnumerable<T> (PR: #8416)
  • Grains can migrate from host-to-host atomically, without needing to reload state from the database (PR: #8452)
  • Many other fixes and improvements

What's Changed

New Contributors

Full Changelog: v7.1.2...v7.2.0