@sergeybykov sergeybykov released this Sep 28, 2018 · 25 commits to master since this release

Assets 2

This release includes a number of performance improvements, the biggest one being the new scheduler, that all add up in our tests to up to 30% throughput increase on the same hardware.

It also brings the support for distributed transaction to what we consider "release candidate" quality, with the new Distributed Transaction Manager at its core. We plan to declare transactions production ready in a subsequent release, after another round of testing and improvements.

Lastly, this release includes a new code generation package Microsoft.Orleans.CodeGenerator.MSBuild that can be used as an alternative to Microsoft.Orleans.OrleansCodeGenerator.Build. The new code generator leverages Roslyn Code Analysis functionality to avoid loading application binaries. As a result, it avoid issues caused by clashing dependency versions and multiple versions of the .NET Core SDK.

This release includes no breaking changes and is backward compatible with 2.0.* releases, which allows for in-place upgrade of a running cluster.

Warning: If you are using Orleans with .NET Core 2.1, do not enable TieredCompilation for Orleans silo and client projects. We recently discovered a CLR bug that is breaking Orleans when TieredCompilation is enabled. See #4990 for more details.

  • Major changes

  • Breaking changes

    • None
  • Non-breaking improvements

    • Test clustering: minor fixups (#4342)
    • TestCluster: wait for cluster stabilization before starting tests (#4343)
    • Avoid continuation in synchronous case (#4422)
    • Improve Dictionary allocation in RequestContext (#4435)
    • Copy elements in-place in InvokeMethodAsync (#4463)
    • Azure blob storage provider: respect UseJson setting (#4455)
    • Fix orleans integration with third party DI solution which requires public constructor (#4453)
    • Remove unused Stopwatch in Grain.OnSetupState (#4403) (#4472)
    • Add validator for ClusterOptions (#4450)
    • Non-static statistics: Round 1 (#4515)
    • Remove saving of minidumps because that functionality is platform specific. (#4558)
    • Fix Dependency Injection without changing Abstractions project (#4573)
    • Sanitize "." from azure queue name (#4582)
    • Add Client/SiloHost builder delegate to legacy GrainClient and Silo/AzureSilo (#4552)
    • Support of ValueTask as a grain method return type (#4562)
    • Convert IMembershipTableGrain into a SystemTarget (#4479)
    • Convert counter values before calling ITelemetryProducer.TrackMetric (#4623)
    • Optimize removing consumed buffers from read buffer (#4629)
    • Remove unused settings MaxPendingWorkItemsHardLimit in SchedulingOptions (#4672)
    • Udpate reference links in sql files (#4684)
    • Use netcoreapp2.0 for msbuild target dll if using dotnet core msbuild but targeting full .net (#4689)
    • Make AzureBasedReminderTable public to allow reuse in extensions (#4699)
    • Remove per-call timer (#4399)
    • Make LifecycleSubject logging less verbose (#4660)
    • Do not use ip address from interface not operational (#4713)
    • Updated Ignore(this Task) method (#4729)
    • Make azure queue name configurable (#4762)
    • Auto-installing grain extensions (#4815)
    • Allow implicit subscription attribute to be inheritable (#4824)
    • Do not place stateless worker locally if the silo is stopping (#4853)
    • When deactivating a grain, do not stop timers if there are running requests (#4830)
    • No default grains storage added to container if one is not configured. (#4861)
    • Revisit silo stop/shutdown timeout (#4875)
    • Add timeout mechanism for grain deactivation (#4883)
    • Do not try to register GrainVersionStore if an implementation of IVersionStore is already registered (#4911)
    • Consul clustering enhancements (#4942)
    • IsOrleansShallowCopyable fixes (#4945)
    • Feature per grain collection attribute (#4890)
    • Add Microsoft.Orleans.Streaming.AzureStorage as a dependency to Microsoft.Orleans.OrleansAzureUtils. (#4954)
    • Migrate Orleans.TelemetryConsumers.Counters to netstandard (#4914)
    • Add TableName to AzureStorageClusteringOptions, AzureStorageGatewayOptions and AzureTableReminderStorageOptions (#4978)
    • Added support for TableName on AWS legacy configurator (#4983)
    • Added Validations for Blob Names and refactored the AzureUtils for Blob & Container names. (#5020)
    • Add LargeMessageWarningThreshold back to Silo(Client)MessagingOptions (#5022)
    • Make MaxSockets in SocketManager configurable. (#5033)
    • Cleanup types in transaction state storage interface (#5030)
  • Non-breaking bug fixes

    • Fix telemetry consumer construction (#4392)
    • Fix client connection retry (#4429)
    • Fix routing in Silo Gateway (#4483)
    • Don't generate serializers for foreign types in Orleans.Streaming.EventHubs (#4487)
    • Fix NRE on AWS DynamoDB storage provider. #4482 (#4513)
    • Fix Exception thrown in MembershipOracle.TryToSuspectOrKill (#4508)
    • Fix logging level check on Grain exception (#451
    • Assign Issue property in RecordedConnectionIssue.Record(...) (#4598)
    • Fix (or workaround?) for codegen using netcore/netstandard 2.1 (#4673)
    • Don't enforce reentrancy for one way requests (#4382)
    • Cleanup Reminders PartitionKey (#4749)
    • Fix NullReferenceException in ExecutingWorkItemsTracker (#4850)
    • Fix NullReferenceException in LocalGrainDirectory when trace logging is enabled (#4854)
    • Fix dependency injection cycle when OrleansJsonSerializer is used as a serialization provider (#4876)
    • Propagate unserializable exceptions to callers (#4907)
    • Fixing race condition with simple queue cache (#4936)
    • More fixed to Transfer of Coordination (transactions) (#4968)
    • Ensure AsyncAgent restarts on fault (#5023)