This repository has been archived by the owner on Oct 30, 2024. It is now read-only.
Releases: launchdarkly/dotnet-server-sdk
Releases · launchdarkly/dotnet-server-sdk
5.3.1
[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
orFloatVariation
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
[5.3.0] - 2018-08-27
Added:
- The new
ILdClient
methodAllFlagsState()
should be used instead ofAllFlags()
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 ofAllFlagsState()
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 optionFlagsStateOption.ClientSideOnly
.
Deprecated:
ILdClient.AllFlags()
5.2.2
[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 hasPackageReference
s to System assemblies.
5.2.1
[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
[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 anld-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 byLaunchDarkly.Client
, has been renamed toLaunchDarkly.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 toSystem.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
[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 intoILdClient
rather than being inILdCommonClient
.
5.1.0
[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 implementsEquals
andGetHashCode
, 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 upgradeLaunchDarkly.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 callDispose
on the client. - Passing
null
for user when callingIdentify
orTrack
no longer causes aNullReferenceException
. Instead, the appropriate event will be sent with no user.
5.0.0
[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 toIEventProcessor
, has slightly different methods, and includesIDisposable
. Also, the properties of theEvent
classes have changed. This will only affect developers who created their own implementation ofIStoreEvents
.
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. TheComponents
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 anIEventProcessor
(formerlyIStoreEvents
) is deprecated, replaced byWithEventProcessorFactory
.
4.1.1
4.1.0
[4.1.0] - 2018-03-05
Added
Configuration
now has anEventSamplingInterval
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.