Skip to content
This repository has been archived by the owner on Oct 30, 2024. It is now read-only.

Releases: launchdarkly/dotnet-server-sdk

5.3.1

30 Aug 21:40
d510782
Compare
Choose a tag to compare

[5.3.1] - 2018-08-30

Fixed:

  • Fixed a bug in streaming mode that prevented the client from reconnecting to the stream if it received an HTTP error status from the server (as opposed to simply losing the connection). (#88)
  • Numeric flag values can now be queried with either IntVariation or FloatVariation and the result will be coerced to the requested type, as long as it is numeric. Previously, if the type of value that came from LaunchDarkly in JSON (or, more specifically, the type that Newtonsoft.Json decided to decode the value as) was different, it was considered an error and the default value would be returned. This change makes the .NET SDK consistent with the Go and Java SDKs.

5.3.0

27 Aug 20:37
25c6a41
Compare
Choose a tag to compare

[5.3.0] - 2018-08-27

Added:

  • The new ILdClient method AllFlagsState() should be used instead of AllFlags() if you are passing flag data to the front end for use with the JavaScript SDK. It preserves some flag metadata that the front end requires in order to send analytics events correctly. Versions 2.5.0 and above of the JavaScript SDK are able to use this metadata, but the output of AllFlagsState() will still work with older versions.
  • The AllFlagsState() method also allows you to select only client-side-enabled flags to pass to the front end, by using the option FlagsStateOption.ClientSideOnly.

Deprecated:

  • ILdClient.AllFlags()

5.2.2

27 Aug 20:37
6267726
Compare
Choose a tag to compare

[5.2.2] - 2018-08-02

  • In streaming mode, if the stream connection fails, there should be an increasing backoff interval before each reconnect attempt. Previously, it would log a message about waiting some number of milliseconds, but then not actually wait.
  • The required package LaunchDarkly.EventSource no longer has PackageReferences to System assemblies.

5.2.1

01 Aug 23:40
cdd95a6
Compare
Choose a tag to compare

[5.2.1] - 2018-08-01

Fixed:

  • The internal classes representing feature flag and segment data were not JSON-serializable. This did not affect the SDK itself, but prevented any IFeatureStore implementation based on Json.Net serialization from working.
  • The event processor did not post to the correct URI if the base events URI was set to a custom value with a non-root path. This did not affect normal usage, but would be a problem if events were being redirected to some other service.

5.2.0

28 Jul 00:16
3566290
Compare
Choose a tag to compare

[5.2.0] - 2018-07-27

Added:

  • New configuration property UseLdd allows the client to use the "LaunchDarkly Daemon", i.e. getting feature flag data from a store that is updated by an ld-relay instance. However, this will not be usable until the Redis feature store integration is released (soon).

Changed:

  • If you attempt to evaluate a flag before the client has established a connection, but you are using a feature store that has already been populated, the client will now use the last known values from the store instead of returning default values.
  • The LaunchDarkly.Common package, which is used by LaunchDarkly.Client, has been renamed to LaunchDarkly.Common.StrongName. Note that you should not have to explicitly install this package; it will be imported automatically.

Fixed:

  • The SDK was referencing several system assemblies via <PackageReference>, which could cause dependency conflicts. These have been changed to framework <Reference>s. A redundant reference to System.Runtime was removed. (#83)
  • The client was logging (at debug level) a lengthy exception stacktrace whenever a string comparison operator was applied to a user property that was null. It no longer does this.

5.1.1

03 Jul 19:13
Compare
Choose a tag to compare

[5.1.1] - 2018-07-02

Changed:

  • When targeting the .NET 4.5 framework, the dependency on Newtonsoft's JSON.Net framework has been changed: the minimum version is now 6.0.1 rather than 9.0.1. This was changed in order to support customer code that uses older versions of JSON.Net. For most applications, this change should have no effect since it is only a minimum version, which can be overridden by any higher version specified in your own dependencies. Note that when targeting .NET Standard, the minimum JSON.Net version is still 9.0.1 because earlier versions were not compatible with .NET Standard.
  • The Identify method has been moved back into ILdClient rather than being in ILdCommonClient.

5.1.0

27 Jun 23:00
Compare
Choose a tag to compare

[5.1.0] - 2018-06-26

Added:

  • A new overload of LDClient.Track allows you to pass any kind of JSON value for the custom event data, not just a string.
  • The User class now implements Equals and GetHashCode, and has a copy constructor.

Changed:

  • Some classes and interfaces have been moved into a separate assembly, LaunchDarkly.Common (source code here), because they will also be used by the LaunchDarkly Xamarin SDK. The names and namespaces have not changed, so you do not need to make any code changes. LaunchDarkly.Common will be installed automatically when you upgrade LaunchDarkly.Client; all other dependencies are unchanged.
  • The client now treats most HTTP 4xx errors as unrecoverable: that is, after receiving such an error, it will not make any more HTTP requests for the lifetime of the client instance, in effect taking the client offline. This is because such errors indicate either a configuration problem (invalid SDK key) or a bug, which is not likely to resolve without a restart or an upgrade. This does not apply if the error is 400, 408, 429, or any 5xx error.
  • During initialization, if the client receives any of the unrecoverable errors described above, the client constructor will return immediately; previously it would continue waiting until a timeout. The Initialized() method will return false in this case.

Fixed:

  • Ensured that all HttpClient instances managed by the client are disposed of immediately if you call Dispose on the client.
  • Passing null for user when calling Identify or Track no longer causes a NullReferenceException. Instead, the appropriate event will be sent with no user.

5.0.0

11 May 00:09
239cdb0
Compare
Choose a tag to compare

[5.0.0] - 2018-05-10

Changed:

  • To reduce the network bandwidth used for analytics events, feature request events are now sent as counters rather than individual events, and user details are now sent only at intervals rather than in each event. These behaviors can be modified through the LaunchDarkly UI and with the new configuration option InlineUsersInEvents. For more details, see Analytics Data Stream Reference.
  • The IStoreEvents interface has been renamed to IEventProcessor, has slightly different methods, and includes IDisposable. Also, the properties of the Event classes have changed. This will only affect developers who created their own implementation of IStoreEvents.

Added:

  • New extension methods on Configuration (WithUpdateProcessorFactory, WithFeatureStoreFactory, WithEventProcessorFactory) allow you to specify different implementations of each of the main client subcomponents (receiving feature state, storing feature state, and sending analytics events) for testing or for any other purpose. The Components class provides factories for all built-in implementations of these.

Deprecated:

  • The WithFeatureStore configuration method is deprecated, replaced by the new factory-based mechanism described above.
  • The LdClient constructor overload that takes an IEventProcessor (formerly IStoreEvents) is deprecated, replaced by WithEventProcessorFactory.

4.1.1

10 Apr 23:19
f94680d
Compare
Choose a tag to compare

[4.1.1] - 2018-03-23

Fixed

  • Fixed a bug in the event sampling feature that was introduced in 4.1.0: sampling might not work correctly if events were generated from multiple threads.

4.1.0

05 Mar 23:59
8ed370a
Compare
Choose a tag to compare

[4.1.0] - 2018-03-05

Added

  • Configuration now has an EventSamplingInterval property. If greater than zero, this causes a fraction of analytics events to be sent to LaunchDarkly: one per that number of events (pseudo-randomly). For instance, setting it to 5 would cause 20% of events to be sent on average.

Changed

  • ConfigurationExtensions.WithPollingInterval will no longer throw an exception if the parameter is lower than the minimum. Instead, it will simply set the value to the minimum and log a warning.