Table of Contents

Changelog

4.7.0

Added

  • Internal infrastructure updates for ScaleOut module packages.

4.6.1

Fixed

  • Fixes NullReferenceException that could be thrown (typically at application startup) when a type annotated with the [SossIndex] attribute is first added to the ScaleOut service and another thread is adding another object of the same type concurrently.

4.6.0

Added

  • Adds new gatewayMode parameter to connection strings, allowing apps to connect to a ScaleOut data grid using hosts' private IP addresses.

4.5.12

Added

  • The port number can be omitted from a connection string's bootstrap gateway when running as a local client.

Fixed

  • Improves handling for thread aborts for traditional .NET Framework 4.x applications when the ASP.NET runtime kills threads due to request timeouts.

4.5.10

Added

  • Internal infrastructure updates for the latest release of the ScaleOut Digital Twin Streaming Service™.

Fixed

  • Improves support for trimming self-contained deployment packages that reference the ScaleOut client library.

4.5.9

Fixed

  • Fixes PlatformNotSupportedException exception that was thrown since version 4.5.0 on Linux systems when handling posted events.

4.5.8

Added

  • Internal infrastructure updates for the latest release of the ScaleOut Digital Twin Streaming Service™.

Fixed

  • ProtocolViolationException errors now cause the associated network connection to be closed in order to prevent problems with subsequent cache operations.

4.5.6

Added

4.5.4

Fixed

  • Reintroduces connection management behavior that was unintentionally changed in version 4.1.10: Local clients are again allowed to open more connections to the local ScaleOut server instance than the limit set in the connection string.

4.5.3

Added

  • Internal infrastructure updates for the latest release of the ScaleOut Digital Twin Streaming Service™.

Fixed

  • Fix NullReferenceException that could be thrown during processing of a ScaleOut Digital Twin Streaming Service™ message when a message exceeds 64KB.

4.5.0

Changed

  • Add/update operations now perform automatic retries when the ScaleOut service reports that it is low on memory or that it is otherwise not ready to perform the operation (due to heavy load or environmental delays). The duration of the retry period is controlled by the new notReadyTimeoutSecs connection string value.
  • Reduced garbage collection overhead during PostEvent/SMI event processing.

Fixed

  • Fix potential hang in Invocation Grid workers when event handlers initiate their own PMI/SMI/PostEvent operations.

4.4.5

Fixed

  • Fix potential event delivery hang when an SMI/PMI/PostEvent operation is sent to an invocation grid that has not registered to handle service events for the specified object's cache.
  • Improved consistency of Digital Twin simulations during ScaleOut server membership changes.

4.4.1

Fixed

  • Fix to deployment of ScaleOut Digital Twin Streaming Service models that participate in simulations.

4.4.0

Added

  • Adds new InvocationGridManager overloads that accept an InvocationGridOptions object. (Supports ScaleOut Digital Twin Streaming Service models that participate in simulations).

4.3.0

Added

  • Support for connecting to ScaleOut deployments running on AWS EC2. See Connecting to ScaleOut in AWS EC2.
  • Internal infrastructure support for the ScaleOut Digital Twin Streaming Service™.

Fixed

4.2.11

Fixed

  • Fixes InvalidOperationException that could be thrown when deploying or signaling an Invocation Grid that is running on multiple ScaleOut hosts.

4.2.10

Fixed

  • Fixes exception that was thrown when large parameter objects (larger than 64 KB) were used in Invoke, Single Object Invoke, and PostEvent operations.

4.2.9

Added

  • Adds support to improve debugging experience for Invocation Grid Worker processes.

4.2.7

Fixed

  • Updates Scaleout.Collections NuGet dependency to latest release (1.0.4) to get latest stability fixes.
  • Fixes internal bookkeeping of event registrations when one client application handles events from multiple ScaleOut stores.
  • Fixes ProtocolViolationException that could be thrown from cache Add/Update operations when GeoServer Notify is configured on a cache but the remote ScaleOut servers are not available.
  • Fixes NoActiveRemoteStoreException that could be thrown from cache read operations when GeoServer Notify is configured on a cache and all the ScaleOut servers in the local cluster are restarted.
  • Fixes issue where the CacheResponse.Value property could throw a NotSupportedException after reading a GeoServer proxy object whose value is stale.
  • The library no longer throws a ProtocolViolationException when an application tries to use GeoServer Pull when the local store name is not set in the ScaleOut service's configuration. A LocalStoreNameConfigurationException is thrown instead.
  • The library no longer throws a ProtocolViolationException when an application tries to use GeoServer Pull and the local store name is used as a remote GeoServer store. An ArgumentException is thrown instead.

Added

  • Adds new Invoke, PostEvent, and SingleObjectInvoke overloads to the Cache class that allow a target Invocation Grid to be specified using the service's internal numeric identifier. These overloads are intended for use in rare scenarios when the service's internal numeric Invocation Grid identifier is known but its string name is not--their primary intent is to support internal product infrastructure.
  • Adds new InvocationGridManager.StartPreinstalledIG method for launching Invocation Grids that are pre-installed on the ScaleOut service's host machines.

4.1.11

Fixed

  • Updates NuGet package dependencies to address NuGet version conflicts for System.Memory and System.Threading.Tasks.Extensions when targeting the traditional .NET 4.x Framework.

4.1.10

Added

  • Adds support for hosting PMI, PostEvent, and single-object invocation handlers in Invocation Grid worker processes.

Fixed

  • Fixes ArgumentNullException that was thrown from ServiceEvents methods when registering for events on a cache that was built using a numeric ID instead of a cache name.

4.0.2

Fixed

  • Fixes issue where passing a null UpdatePolicy argument to a cache update method would cause the object's timeout to be reset to the cache's default. A null UpdatePolicy now causes the object's timeout to remain unchanged.

4.0.1

3.1.4

Fixed

  • Further performance improvements to the library's internal connection pool on the traditional .NET Framework: New lock management in the network layer improves client performance when 200+ ASP.NET worker threads perform simultaneous cache operations.

3.1.3

Fixed

  • Removes internal usage of Microsoft.Extensions.Logging.Abstractions.NullScope, which is not present in newer versions of Microsoft.Extensions.Logging.Abstractions.

3.1.2

Fixed

  • Expands upon 3.1.1 to address additional interaction between deep copies and the in-process client cache. Specifically, deep copies that are retrieved from a round-trip to the ScaleOut service (as opposed to deep copies from a local network cache hit) are no longer added to the in-process client cache during read operations.

3.1.1

Fixed

  • References to deep copies are no longer added to the in-process client cache during read operations.

3.1.0

Added

3.0.0

Added

Changed

  • SossIndexAttribute has been moved into a separate NuGet package (Scaleout.Client.Attributes) that has no dependencies.
  • Removed and replaced obsolete cache extension methods from QueryableExtensions for running PMI Invoke() operations using a LINQ expression.

2.2.2

Fixed

  • Fixes degraded performance of internal connection pool on .NET Framework when many threads (tens/hundreds) are waiting for a connection to the ScaleOut service.
  • Improves performance of internal connection pool under mixed sync/async load on .NET Framework.

2.2.1

Changed

  • Increases connection string's maxPoolSize limit from 64 to 128.

2.2.0

Added

2.1.4

Added

  • Internal infrastructure changes to support the ScaleOut Digital Twin Streaming Service™.

2.1.3-alpha

Internal development and testing release. (Not released publicly.)

2.1.2

Fixed

  • Fixed networking issue when running as a .NET Core 3.x Azure App Service. Connecting to ScaleOut hosts through the Azure VNet Integration feature could cause a SocketException to be thrown that states, "An attempt was made to access a socket in a way forbidden by its access permissions."

2.1.1

Fixed

2.1.0

Added

Fixed

  • Improved connection retry logic when all ScaleOut services abruptly become unavailable. While attempting to locate an active host, the client library now includes all hosts from the connection string's original bootstrap list instead of just using hosts it had previously connected to.

2.0.1

Official 2.0 release. No changes since the 2.0 beta other than removal of the NuGet package's "prerelease" status.

2.0.0-beta

Added

Changed

  • Redesigned ServiceEvents registration methods to be synchronous--they no longer need to be awaited. The original async methods have been deprecated, and the new event registration methods are overloaded to accept both synchronous and async callbacks.

1.1.6

Fixed

  • Fix to address a report of a System.ExecutionEngineException that was thrown when connecting to the ScaleOut service.
  • Fix deadlocks that could occur when running in environments that use a synchronization context (WinForms, legacy ASP.NET, etc.).
  • Connection strings with extraneous trailing semicolons will no longer throw an ArgumentException.

1.1.0

Added

Changed

  • Increased the default client cache capacity from 100 to 1000 items. The capacity can be set explicitly using CacheBuilder.SetClientCache or through a config file (see Configuring Cache Policies).
  • Improved network cache performance when the client cache is disabled.

1.0.1

Changed

  • Fixed issue where unspecified connection string parameters defaulted to zero instead of their expected default values.

1.0.0

Changed

  • Connection strings are no longer passed directly to a CacheBuilder constructor--they are passed to a GridConnection.Connect or ConnectAsync call instead. The returned GridConnection object is then passed to the CacheBuilder constructor. See Connecting to a ScaleOut Data Grid for an overview and updated examples.
  • Added new Cache.TryReadExclusiveAsync method that fails immediately if another caller has the object locked instead of waiting until the object becomes available.

0.5.1-beta

Changed

  • Nuget package is now multitargeted (.NET Standard 2.0 and .NET Framework >= 4.6.2) instead of just .NET Standard.
  • Fixed NullReferenceException that was thrown when network cache is enabled.

0.5.0-beta

Initial beta release.

Changed

  • Fixed issue in remote read-through handler where an unhandled exception in a user callback could hang callers waiting for completion.
  • Various documentation improvements (new topics for backing store events, return codes on CacheResponse.Result for typical CRUD operations, fixed misc. typos).
  • Removed unused and stubbed-out query methods from Cache class that had never been implemented due to redesign.

0.4.0-alpha

Added

Breaking Changes

  • Major rework of cache configuration (based on internal and early customer feedback--thank you!). See Configuration Overview for details. Specifically:
    • Connection information is no longer specified in a strict configuration structure. Connection strings are now used. (See Connecting to a ScaleOut Data Grid).
    • A config file is no longer required. A CacheBuilder instance can be constructed with just a connection string and policies can be set on the CacheBuilder at runtime.
    • To use cache policies from a .NET Core configuration file, supply the CacheBuilder constructor with in just the config section containing the configuration info for your cache. A top-level ScaleOut-specific section should no longer be passed in.
    • The cache policy settings in a config file no longer have a one-to-one relationship with a named cache. Multiple caches can now use the same cache policy config section.
    • For traditional .NET Framework apps that need to pull policies from a config file, pass a LegacyXmlConfiguration instance to the cache builder. The LegacyXmlConfiguration constructor takes the name of an entry under the config file's section. See Configuring Cache Policies for details.
  • To better support future object policy options, the immutable CreatePolicy class has been changed to use a builder pattern instead of a large number of optional constructor arguments for instantiation. The CreatePolicyBuilder class is now used to set policies on objects--for convenience, use GetPolicyBuilder() to get a builder instance that is pre-populated with a cache's default policies. See Dependencies for a usage example.

0.3.0-alpha

Added

  • Cache names are now registered with the ScaleOut service (for display in ScaleOut Object Browser and "soss.exe list_names").
  • Implemented Cache.ClearAsync() to clear all objects from a cache.

0.2.0-alpha

Breaking Changes

  • Configuration: "Name" field in Cache configuration has been renamed to "CacheName" (.NET Core's config provider for XML uses "name" as a reserved attribute to identify array element offsets, causing a conflict). Please update your config files.
  • Configuration: The CacheBuider constructor now takes the IConfigSection containing ScaleOut settings rather than its parent. (In other words, the constructor no longer assumes that it is given the top-level IConfigSection instance, and the ScaleOut section doesn't have to be called "Scaleout.Client"--users now define where the ScaleOut configuration section goes in their .NET Core config files.) Please change your CacheBuider usage as needed: typically, this means adding a GetSection("Scaleout.Client") call to the IConfigSection instance that was passed into the 0.1.0-alpha version of CacheBuider.

Added

  • Support for more than 2 parent objects when defining dependencies. (Requires server version 5.7.3.328 or higher)
  • Allow using DNS names in BootstrapGateways configuration.
  • Added Cache.GetMetadataAsync implementation: retrieves server metadata for an object stored in the ScaleOut service.

Changed

  • Fixed ShortStringKeyEncoder: key no longer needs to be exactly 32 bytes.

0.1.0-alpha

  • Initial alpha release.