Releases: launchdarkly/go-server-sdk
Releases · launchdarkly/go-server-sdk
4.17.1
[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
[4.17.0] - 2020-03-30
Added:
Config
fieldStreamInitialReconnectDelay
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
[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
[4.16.1] - 2020-02-10
Changed:
- Diagnostic events reported by this SDK now have an SDK name of
go-server-sdk
instead ofGo
.
4.16.0
[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 interfacesUserBuilder
andUserBuilderCanMakeAttributePrivate
. This is the new preferred mechanism for creatingUser
instances when you need to set multiple properties; it reduces unsafe and inconvenient use of pointers.User
property getter methods such asGetName()
.- The SDK has a new dependency on
gopkg.in/launchdarkly/go-sdk-common.v1
, which provides the helper typesldvalue.Value
andldvalue.OptionalString
. - In
LDClient
,JSONVariation
andJSONVariationDetail
are the new preferred mechanism for evaluating flags whose values can be of any JSON type. The value is represented as anldvalue.Value
rather than ajson.RawMessage
, but can be easily converted tojson.RawMessage
or to other Go types. - In
LDClient
,TrackData
andTrackMetric
are the new preferred versions ofTrack
andTrackWithMetric
; they useldvalue.Value
rather thaninterface{}
for the data parameter. EvaluationReason
methodsGetRuleIndex()
,GetRuleID()
,GetPrerequisiteKey()
,GetErrorKind()
. These were formerly only on concrete implementation types such asEvaluationReasonRuleMatch
; 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 ofldlog.Info
, omitting onlyDebug
-level messages. A bug introduced in 4.12.0 caused the default logger not to produce any output. It will now log atInfo
level by default again, as documented.
Deprecated:
- All exported fields of
User
. In a future version, these will be hidden. Use getters such asGetName()
to read these fields, andNewUserBuilder
to set them. - In
LDClient
,JsonVariation
,JsonVariationDetail
,Track
, andTrackWithMetric
. UseJSONVariation
,JSONVariationDetail
,TrackData
,TrackEvent
, orTrackMetric
instead. - The
EvaluationReason
implementation types such asEvaluationReasonRuleMatch
are deprecated. Instead of casting to these types, useEvaluationReason
methods such asGetKind()
andGetErrorKind()
.
4.15.0
[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 withConfig.DiagnosticRecordingInterval
. - New
Config
fieldsWrapperName
andWrapperVersion
allow a library that uses the Go SDK to identify itself for usage data if desired.
4.14.2
[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
[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
[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 anyldhttp
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 likeld.VersionedData
. SegmentExplanation
,HttpStatusError
,ParseTime
,ParseFloat64
, andToJsonRawMessage
were meant for internal use, and will be removed or made private in a future version.
4.13.1
[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.