Skip to content

Releases: launchdarkly/go-server-sdk

4.17.1

16 Apr 17:50
Compare
Choose a tag to compare

[4.17.1] - 2020-04-16

Fixed:

  • In streaming mode, a bug introduced in version 4.17.0 could cause a panic if the stream connection was broken and remained unavailable for a fairly long time (over half an hour).

4.17.0

30 Mar 19:37
Compare
Choose a tag to compare

[4.17.0] - 2020-03-30

Added:

  • Config field StreamInitialReconnectDelay specifies how long the SDK should initially wait before retrying the stream connection after a failure. The default is one second; previously it was three seconds.

Changed:

  • When the SDK retries the stream connection after a failure, the delay now increases using an exponential backoff (which is reset to the initial level if the stream remains active for at least a minute), and each delay also has a random jitter from 0 to -50%. Previously, every retry used a three-second delay.

4.16.2

14 Mar 02:53
Compare
Choose a tag to compare

[4.16.2] - 2020-03-13

Added:

  • CI tests now verify that the SDK supports Go 1.14.

Fixed:

  • In streaming mode, when using a persistent data store such as Redis, if the database was unavailable when the client initially started and made its first stream connection, a bug caused the SDK to give up on retrying and leave the client in a failed state. This has been fixed so that it will retry the stream connection once it detects that the database is available again (or, if using infinite caching mode, it will leave the same stream connection open and write the already-cached data to the database).

4.16.1

11 Feb 01:24
Compare
Choose a tag to compare

[4.16.1] - 2020-02-10

Changed:

  • Diagnostic events reported by this SDK now have an SDK name of go-server-sdk instead of Go.

4.16.0

04 Feb 20:10
Compare
Choose a tag to compare

[4.16.0] - 2020-02-04

This release introduces new types for building user properties and representing arbitrary JSON values. In the next major version, these will entirely replace the current deprecated equivalents.

Added:

  • NewUserBuilder, and its associated interfaces UserBuilder and UserBuilderCanMakeAttributePrivate. This is the new preferred mechanism for creating User instances when you need to set multiple properties; it reduces unsafe and inconvenient use of pointers.
  • User property getter methods such as GetName().
  • The SDK has a new dependency on gopkg.in/launchdarkly/go-sdk-common.v1, which provides the helper types ldvalue.Value and ldvalue.OptionalString.
  • In LDClient, JSONVariation and JSONVariationDetail are the new preferred mechanism for evaluating flags whose values can be of any JSON type. The value is represented as an ldvalue.Value rather than a json.RawMessage, but can be easily converted to json.RawMessage or to other Go types.
  • In LDClient, TrackData and TrackMetric are the new preferred versions of Track and TrackWithMetric; they use ldvalue.Value rather than interface{} for the data parameter.
  • EvaluationReason methods GetRuleIndex(), GetRuleID(), GetPrerequisiteKey(), GetErrorKind(). These were formerly only on concrete implementation types such as EvaluationReasonRuleMatch; they are being added to the interface type because in a future version, it will be changed to a struct.

Fixed:

  • By default, the SDK should log to os.Stderr with a minimum level of ldlog.Info, omitting only Debug-level messages. A bug introduced in 4.12.0 caused the default logger not to produce any output. It will now log at Info level by default again, as documented.

Deprecated:

  • All exported fields of User. In a future version, these will be hidden. Use getters such as GetName() to read these fields, and NewUserBuilder to set them.
  • In LDClient, JsonVariation, JsonVariationDetail, Track, and TrackWithMetric. Use JSONVariation, JSONVariationDetail, TrackData, TrackEvent, or TrackMetric instead.
  • The EvaluationReason implementation types such as EvaluationReasonRuleMatch are deprecated. Instead of casting to these types, use EvaluationReason methods such as GetKind() and GetErrorKind().

4.15.0

23 Jan 21:15
Compare
Choose a tag to compare

[4.15.0] - 2020-01-23

Note: if you are using the LaunchDarkly Relay Proxy to forward events, update the Relay to version 5.10.0 or later before updating to this Go SDK version.

Added:

  • The SDK now periodically sends diagnostic data to LaunchDarkly, describing the version and configuration of the SDK, the architecture and version of the runtime platform, and performance statistics. No credentials, hostnames, or other identifiable values are included. This behavior can be disabled with Config.DiagnosticOptOut or configured with Config.DiagnosticRecordingInterval.
  • New Config fields WrapperName and WrapperVersion allow a library that uses the Go SDK to identify itself for usage data if desired.

4.14.2

22 Jan 21:28
Compare
Choose a tag to compare

[4.14.2] - 2020-01-22

Fixed:

  • The SDK was logging a spurious "feature store query returned unexpected type" message at ERROR level if the application tried to evaluate an unknown feature flag when using a persistent data store.
  • Added missing package comments.

4.14.1

15 Jan 20:28
Compare
Choose a tag to compare

[4.14.1] - 2020-01-15

Fixed:

  • The SDK now specifies a uniquely identifiable request header when sending events to LaunchDarkly to ensure that events are only processed once, even if the SDK sends them two times due to a failed initial attempt.

4.14.0

09 Jan 21:04
Compare
Choose a tag to compare

[4.14.0] - 2020-01-09

Added:

  • ldhttp.ProxyOption, for specifying an HTTP/HTTPS proxy URL programmatically rather than using environment variables.

Fixed:

  • NewHTTPClientFactory did not work correctly: it did construct an HTTP client, but did not actually apply any ldhttp transport options that were specified.
  • In rare circumstances (depending on the exact data in the flag configuration, the flag's salt value, and the user properties), a percentage rollout could fail and return a default value, logging the error "Data inconsistency in feature flag ... variation/rollout object with no variation or rollout". This would happen if the user's hashed value fell exactly at the end of the last "bucket" (the last variation defined in the rollout). This has been fixed so that the user will get the last variation.

Deprecated:

  • Data model classes FeatureFlag, Segment, etc. are all deprecated and will be moved to another package in the future. Application code should never need to reference these types, and feature store integration code should only use abstractions like ld.VersionedData.
  • SegmentExplanation, HttpStatusError, ParseTime, ParseFloat64, and ToJsonRawMessage were meant for internal use, and will be removed or made private in a future version.

4.13.1

05 Nov 23:20
Compare
Choose a tag to compare

[4.13.1] - 2019-11-05

Fixed:

  • When using a persistent feature store (Redis, etc.), if multiple goroutines request the same flag in rapid succession when the flag data is not in the cache, the SDK will coalesce these requests so only a single database query is done.