Skip to content

Releases: dotnet/orleans

v3.1.7

19 May 21:43
Compare
Choose a tag to compare

Improvements and bug fixes since 3.1.6.

  • Non-breaking bug fixes
    • Do not reject rejection messages locally. Drop them instead (#6525)

v3.2.0-rc1

08 May 00:51
c58d875
Compare
Choose a tag to compare
v3.2.0-rc1 Pre-release
Pre-release

3.2.0 includes two major changes

  • Pluggable grain directory

This feature allows to use external storage as an option for keeping grain directory information. Directory plugins can be configured for different grain classes independently, so that different consistency/availability tradeoffs can be made for different grain classes.
As part of this change, we had to remove support for multi-cluster functionality. We intend to bring it back as a grain directory plugin at a later time. Removal of multi-clustering is the only breaking change, and only if you used the feature previously.

  • Switch to using .NET thread pool for scheduling

Since first version, Orleans has been using its own custom thread pool implementation to make up for the deficiencies in the .NET thread pool. Since then, the .NET thread pool has improved significantly, and there is no need any more for a separate solution within Orleans.

We measured a performance increase of 3.2.0-rc1 compared to 3.1.6 of 12% to 20% depending on the test scenario.

Other improvements and bug fixes since 3.1.6.

  • Breaking changes

    • Remove current multicluster implementation (#6498)
  • Non-breaking improvements

    • Support for pluggable grain directory (#6340, #6354, #6366, #6385, #6473, #6485, #6502, #6524)
    • Expose timeouts for Azure Table Storage (#6462, #6501, #6509)
    • Schedule Tasks and WorkItems on .NET ThreadPool (#6261)
    • Schedule received messages onto thread pool in Connection.ProcessIncoming (#6263)
    • Remove AsyncAgent, Executor and related (#6264)
    • Reorient RuntimeContext around IGrainContext (#6365)
    • Remove Message.DebugContext and related code (#6323)
    • Remove obviated GrainId constructor and associated code (#6322)
    • Set isolation level to READ COMMITED to avoid Gap Lock issues (#6331)
    • AdoNet: Rename Storage table to OrleansStorage for consistency with other tables. (#6336)
    • Avoid using GrainTimer in non-grain contexts (#6342)
    • Remove unnecessary provider runtime members (#6362)
    • Remove ClientInvokeCallback (#6364)
    • Remove ProcessExitHandlingOptions (#6369)
    • Simplify OrleansTaskScheduler (#6370)
    • Remove IServiceProvider from IGrainContext (#6372)
    • Streamline MemoryStorage and InMemoryReminderTable (#6315)
    • Fix test glitch in PersistenceProvider_Memory_FixedLatency_WriteRead (#6378)
    • Fix errors reported by GitHub Semmle code analysis tools. (#6374)
    • Remove Microsoft prefix from logging categories (#6431)
    • Streamline Dictionary use and remove some dead code (#6439)
    • Make methods on AITelemetryConsumer virtual; clean-up (#6469)
    • Remove IHostedClient abstraction (#6475)
    • Only allocate an array for lengths when array rank is greater than 3 (#6493)
  • Non-breaking bug fixes

    • Fix log message (#6408)

v3.1.6

16 Apr 18:52
Compare
Choose a tag to compare

Improvements and bug fixes since 3.1.5.

  • Non-breaking improvements

    • Added eventIndex (#6467)
    • Send rejections for messages enqueued on stopped outbound queue (#6474)
    • Stopped WorkItemGroup logging enhancement (#6483)
    • Streamline LINQ/Enumerable use (#6482)
  • Non-breaking bug fixes

    • Gossip that the silo is dead before the outbound queue gets closed (#6480)
    • Fix a race condition in LifecycleSubject (#6481)

v3.1.5

09 Apr 19:27
Compare
Choose a tag to compare

Improvements and bug fixes since 3.1.4.

  • Non-breaking improvements

    • Don't use iowait in cpu calcs on linux (#6444)
    • TLS: specify an application protocol to satisfy ALPN (#6455)
    • Change the error about not supported membership table cleanup functionality into a warning. (#6447)
    • Update obsoletion warning for ISiloBuilderConfigurator (#6461)
    • Allow GatewayManager initialization to be retried (#6459)
  • Non-breaking bug fixes

    • Consistently sanitize RowKey & PartitionKey properties for Azure Table Storage reminders implementation (#6460)

v3.1.4

26 Mar 20:18
Compare
Choose a tag to compare

Improvements and bug fixes since 3.1.3.

  • Non-breaking improvements

    • Reduce port clashes in TestCluster (#6399, #6413)
    • Use the overload of ConcurrentDictionary.GetOrAdd that takes a method (#6409)
    • Ignore not found exception when clearing azure queues (#6419)
    • MembershipTableCleanupAgent: dispose timer if cleanup is unsupported (#6415)
    • Allow grain call filters to retry calls (#6414)
    • Avoid most cases of loggers with non-static category names (#6430)
    • Free SerializationContext and DeserializationContext between calls (#6433)
  • Non-breaking bug fixes

    • Reminders period overflow issue in ADO.NET Reminders Table (#6390)
    • Read only the body segment from EventData (#6412)

v3.1.3

18 Mar 16:18
Compare
Choose a tag to compare

This release fixes the partial backward compatibility regression introduced in 3.1.0. See #6392 for more details.

If your application targets .NET Core 3.1, rolling upgrade to 3.1.3 can be performed from all versions except for 3.1.0 and 3.1.2
For all other .NET versions, there are no known compatibility issues with rolling upgrades to 3.1.3

Improvements and bug fixes since 3.1.2.

  • Breaking changes (for rolling upgrades from 3.1.0 and 3.1.2 running on .NET Core 3.1)

    • Omit assembly name for all types from System namespace during codegen (#6394)
    • Fix System namespace classification in Orleans.CodeGenerator (#6396)
  • Non-breaking improvements

    • Amended Linux stats registration to add services on Linux only (#6375)
    • Update performance counter dependencies (#6397)

v3.1.2

05 Mar 01:38
Compare
Choose a tag to compare

Known issue:
We discovered a partial backward compatibility regression in this release. If your application targets .NET Core 3.1, a rolling upgrade from previous versions to 3.1.2 will fail. See #6392 for more details. The regression is fixed in 3.1.3.

Improvements and bug fixes since 3.1.0.

  • Non-breaking improvements

    • Remove new() constraint for grain persistence (#6351)
    • Improve TLS troubleshooting experience (#6352)
    • Remove unnecessary RequestContext.Clear in networking (#6357)
    • Cleanup GrainBasedReminderTable (#6355)
    • Avoid using GrainTimer in non-grain contexts (#6342)
  • Non-breaking bug fixes

    • Fix CleanupDefunctSiloMembership & MembershipTableTests (#6344)
    • Schedule IMembershipTable.CleanupDefunctSiloEntries more frequently (#6346)
    • CodeGenerator fixes (#6347)
    • Fix handling of gateways in Orleans.TestingHost (#6348)
    • Avoid destructuring in log templates (#6356)
    • Clear RequestContext after use (#6358)

v3.1.0

23 Feb 23:23
Compare
Choose a tag to compare

Known issue:
We discovered a partial backward compatibility regression in this release. If your application targets .NET Core 3.1, a rolling upgrade from previous versions to 3.1.0 will fail. See #6392 for more details. The regression is fixed in 3.1.3.

Improvements and bug fixes since 3.0.0.

In this release we enabled multi-targeting, nestandard2.0 and netcoreapp3.1, for Microsoft.Orleans.Core, Microsoft.Orleans.OrleansRuntime, and Microsoft.Orleans.Connections.Security packages to leverage some performance features available in netcoreapp3.1.

Microsoft.Orleans.OrleansCodeGenerator.Build package has been marked as deprecated in favor of Microsoft.Orleans.CodeGenerator.MSBuild. We don't plan future releases of Microsoft.Orleans.OrleansCodeGenerator.Build.

  • Non-breaking improvements

    • Azure table grain storage inconsistent state on not found (#6071)
    • Removed silo status check before cleaing up system targets from… (#6072)
    • Do not include grain identifier in the ILogger category name (#6122)
    • Specify endpoint AddressFamily in Socket constructor (#6168)
    • Make IFatalErrorHandler public so that it can be replaced by users (#6170)
    • Initial cross-platform build unification (#6183)
    • Fix 'dotnet pack --no-build' (#6184)
    • Migrate 'src' subdirectory to new code generator (#6188)
    • Allow MayInterleaveAttribute on base grains. Fix for issue #6189 (#6192)
    • Multi-target Orleans sln and tests (#6190)
    • Serialization optimizations for .NET Core 3.1 (#6207)
    • Shorten ConcurrentPing_SiloToSilo (#6211)
    • Add OrleansDebuggerHelper.GetGrainInstance to aid in local debugging (#6221)
    • Improve logging and tracing, part 1 (#6226)
    • Mark IGatewayListProvider.IsUpdatable obsolete and avoid blocking refresh calls when possible (#6236)
    • Expose IClusterMembershipService publicly (#6243)
    • Minor perf tweak for RequestContext when removing last item (#6216)
    • Change duplicate activation to a debug-level message (#6246)
    • Add support Microsoft.Data.SqlClient provider, fix #6229 (#6238)
    • TestCluster: support configurators for IHostBuilder & ISiloBuilder (#6250)
    • Adds MySqlConnector library using invariant MySql.Data.MySqlConnector (#6251)
    • Expose exception when initializing PerfCounterEnvironmentStatistics (#6260)
    • Minor serialization perf improvements for .NET Core (#6212)
    • Multi-target TLS connection middleware to netcoreapp3.1 and netstandard2.0 (#6154)
    • Fix codegen incremental rebuild (#6258)
    • CodeGen: combine cache file with args file and fix incremental rebuild (#6266)
    • Avoid performing a lookup when getting WorkItemGroup for SchedulingContext (#6265)
    • Membership: require a minimum grace period during ungraceful shutdown (#6267)
    • Provide exception to FailFast in FatalErrorHandler (#6272)
    • Added support for PAY_PER_REQUEST BillingMode (#6268)
    • Use RegionEndpoint.GetBySystemName() to resolve AWS region (#6269)
    • Support Grain Persistency TTL On dynamo DB (#6275, #6287)
    • Replaced throwing Exception to Logger.LogWarning (#6286)
    • Added ability to skip client TLS authentication. (#6302)
    • Use current element for SimpleQueueCacheCursor.Element (#6299)
    • Manual stats dump #6310 (#6311)
    • Fix SQL Server connection string (#6320)
    • Don't set ServiceUrl when region is provided. (#6327)
    • Explicit setting for UseProvisionedThroughput (#6328)
    • Add explicit references to System.Diagnostics.EventLog and System.Security.Cryptography.Cng to fix build warnings. (#6329)
    • Change NETSTANDARD2_1 preprocessor directives to NETCOREAPP (#6332)
    • Implement CleanupDefunctSiloEntries for DynamoDB membership provider (#6333)
  • Non-breaking bug fixes

    • Consul: support extended membership protocol (#6095)
    • Fix routing of gateway count changed events to registered servi… (#6102)
    • Allow negative values in TypeCodeAttribute. Fixes #6114 (#6127)
    • DynamoDB: support extended membership protocol (#6126)
    • Redact logged connection string in ADO storage provider during init (#6139)
    • Fixed CodeGenerator.MSBuild cannot ResolveAssembly in .NetCore 3.0 (#6143)
    • CodeGen: fix ambiguous reference to Orleans namespace (#6171)
    • Avoid potential NullReferenceException when re-initializing statistics (#6179)
    • Close ConnectionManager later in shutdown stage (#6217)
    • Avoid capturing ExecutionContext in GrainTimer and other timers (#6234)
    • Fix code gen for ValueTask (#6285)
    • Add missing dependency to Orleans.CodeGenerator (#6297)
    • Add System.Threading.Tasks.Extensions dependency to Abstractions (#6301)
    • Propagate TestClusterOptions.GatewayPerSilo value in TestClusterOptions.ToDictionary() (#6326)
    • Avoid registering Gateway in DI since it can be null (#6312)

v3.1.0-rc3

13 Feb 04:41
e182707
Compare
Choose a tag to compare

Improvements and bug fixes since 3.1.0-rc2.

  • Non-breaking bug fixes
    • Add System.Threading.Tasks.Extensions dependency to Abstractions (#6301)

v3.1.0-rc2

12 Feb 04:21
c5c71d4
Compare
Choose a tag to compare

Improvements and bug fixes since 3.1.0-rc1.

In this release we enabled multi-targeting, nestandard2.0 and netcoreapp3.1, for Microsoft.Orleans.Core, Microsoft.Orleans.OrleansRuntime, and Microsoft.Orleans.Connections.Security packages to leverage some performance features available in netcoreapp3.1.

  • Non-breaking bug fixes
    • Add missing dependency to Orleans.CodeGenerator (#6297)