github dotnet/orleans v1.4.0

latest releases: v8.1.0, v8.1.0-preview3, v7.2.6...
7 years ago

Major new features

  • Revamped JournaledGrain for event sourcing with support for geo-distributed log-based consistency providers.
  • Abstraction of Grain Services with fixed-placed per-silo application components with their workload partitioned via cluster consistency ring.
  • Support for heterogeneous silos with non-uniform distribution of available grain classes.
  • Cluster membership provider for Service Fabric.

Changelog (1.4.0 and 1.4.0-beta)

New in v1.4.0 since beta

  • Known issues
    • When the silo starts up, it will register IServiceProvider in the container, which can be a circular reference registration when using 3rd party containers such as AutoFac. This is bein addressed for 1.4.1, but there is a simple workaround for it at #2747
    • The build-time code generator required (and automatically added) a file named Properties\orleans.codegen.cs to the project where codegen was being ran. The new MSBuild targets no longer do that, so when upgrading a solution with a previous version of Orleans, you should delete this orleans.codegen.cs file from your grain projects.
  • Improvements
    • Support for grains with generic methods #2670
    • Do native PE files check before assembly loading to avoid misleading warnings on startup #2714
    • Throw explicit exception when using streams not in Orleans Context #2683
    • Several improvements to JournaledGrain API #2651 #2720
    • Allow overriding MethodId using [MethodId(id)] on interface methods #2660
  • Bug fixes
    • EventHubSequenceToken not used consistently #2724
    • Support grains with generic state where the state param do not match the grain type params #2715
    • Fix ServiceFabric IFabricServiceSiloResolver registration in DI container #2712
    • Fix ConditionalCheckFailedException when updating silo 'IAmAlive' field in DynamoDB #2678
    • Ensure DynamoDB Gateway Provider only returns silos with a proxy port configured #2679
    • Fix e-Tag issue in AzureBlobStorage when calling ClearStateAsync (#2669)
    • Other minor fixes: #2729 #2691

Changes in v1.4.0-beta

  • Noteworthy breaking changes:
    • Azure table storage throws InconsistentStateException #2630
    • All grain instances and providers are constructed using the configured Dependency Injection container. The result is that all grains must have a single parameterless public constructor or single constructor with arguments which can all be injected. If no container is configured, the default container will be used. #2485
  • Improvements
    • Optional IL-based fallback serializer #2162
    • IncomingMessageAcceptor sockets change from APM to EAP #2275
    • Show clearer error when ADO.NET provider fails to init #2303, #2306
    • In client, when a gateway connection close reroute not yet sent message to another gateway #2298
    • MySQL Script: Minor syntax tweak to support previous server versions #2342
    • Azure Queue provider message visibility config #2401
    • Propagate exceptions during message body deserialization #2364
    • Check IAddressable before DeepCopy #2383
    • Modified stream types to not use fallback serializer and allow external #2330
    • Add "Custom/" prefix for NewRelic metrics #2453
    • Ignore named EventWaitHandle when not available in platform #2462
    • Heterogenous silos support #2443
    • Update to Consul 0.7.0.3 nuget package, because of breaking change in Consul API. #2498
    • Grain Services by @jamescarter-le #2531
    • Expose IMembershipOracle & related interfaces #2557
    • Trigger registration of clients connected to the gateways in the directory when a silo is dead #2587
    • Log Consistency Providers #1854
    • In XML config, if SystemStoreType set to Custom but no ReminderTableAssembly are specified, assume that ReminderServiceProviderType is set to Disabled #2589
    • In config XML, when SystemStoreType is set to MembershipTableGrain, set ReminderServiceType to ReminderTableGrain #2590
    • Service Fabric cluster membership providers #2542
    • Adds optional native JSON support to MySQL #2288
    • Allow serializers to have multiple [Serializer(...)] attributes #2611
    • Removed GrainStateStorageBridge from GrainCreator to allow better control of the IStorage used when using non-silo unit tests. #2243
    • Failsafe Exception serialization #2633
    • Added a data adapter to azure queue stream provider #2658
    • Client cluster disconnection #2628
    • Tooling improvements in build-time codegen #2523
  • Performance
  • Bug fixes
    • Empty deployment Id in Azure #2230
    • Remove zero length check in Protobuf serializer #2251
    • Make PreferLocalPlacement activate in other silos when shutting down #2276
    • Reset GrainClient.ClientInvokeCallback when uninitializing GrainClient #2299
    • Fix ObjectDisposedException in networking layer #2302
    • Reset client gateway reciever buffer on socket reset. #2316
    • Removed calling Trace.Close() from TelemetryConsumer.Close() #2396
    • Removes deadlocking and corrupted hashing in SQL storage provider #2395
    • Fix #2358: Invoke interceptor broken for generic grains #2502
    • Only a hard coded set of statistics were going to telemetry consumers. Now all non-string statistics are tracked. #2513
    • Fix invocation interception for grain extensions #2514
    • Fix type assertion in AdaptiveDirectoryCacheMaintainer #2525
    • MembershipTableFactory should call InitializeMembershipTable on membership table. #2537
    • CodeGen: fix check on parameters to generic types with serializers #2575
    • EventHubQueueCache failing to write checkpoints on purge #2613
    • Fix code copy-paste errors discovered by Coverity #2639
    • GrainServices are now Started by the Silo on Startup #2642

For the full changelog and up-to-date known issues, see Changelog

Don't miss a new orleans release

NewReleases is sending notifications on new releases.