Skip to content

Releases: launchdarkly/ld-relay

6.1.3

21 Jan 19:50
Compare
Choose a tag to compare

[6.1.3] - 2021-01-21

Changed:

  • The Relay Proxy now uses a more efficient JSON reading and writing mechanism instead of Go's encoding/json when it is reading feature flag data from LaunchDarkly, and when it is creating JSON responses for SDK endpoints. Both CPU usage and the number of memory allocations have been greatly decreased for these operations. How much of a performance improvement this represents in the real world for any given Relay Proxy instance will depend on how often these operations are being done, that is, how often there are flag updates from LaunchDarkly and/or requests from SDK clients.
  • When proxying events from the PHP SDK, the Relay Proxy now supports a new type of event, "alias", which will be implemented in a future release of the PHP SDK.

Fixed:

  • During startup, if a timeout occurs while waiting for data from LaunchDarkly, the Relay Proxy endpoints for that environment will stop returning 503 errors (as they do while waiting for initialization), and start accepting requests even though the environment is not fully initialized yet—in case there is any last-known data (that is, in a database) from an earlier successful startup. This is the standard behavior of the server-side SDKs, and it was the behavior of the Relay Proxy prior to the 6.0 release but had been accidentally changed.
  • Corrected and clarified documentation pages "Metrics" and "Service endpoints".

6.1.2

05 Dec 03:21
Compare
Choose a tag to compare

[6.1.2] - 2020-12-04

Fixed:

  • In a load-balanced configuration where multiple Relay Proxy instances were sharing a single database for their own persistent storage, but SDK clients were connecting to the Relay Proxy streaming endpoints via HTTP instead of reading from the database, it was possible for some of the Relay Proxy instances to fail to transmit a feature flag update from LaunchDarkly to the SDK clients (because they would see that another Relay Proxy instance had already updated the database, and would incorrectly assume that this meant clients already knew about it). This problem was introduced in version 6.0.0 and is fixed in this release.

6.1.1

04 Dec 18:43
Compare
Choose a tag to compare

[6.1.1] - 2020-12-04

Fixed:

  • In automatic configuration mode, if an environment's SDK key was changed but the old key had not yet expired, the Relay Proxy did not accept client requests with the old key as it should have. (#112)
  • In automatic configuration mode, if there was a delay in obtaining the initial configuration from LaunchDarkly (due to network latency or service latency), and the Relay Proxy received client requests with valid SDK keys during that interval, it would return 401 errors because it did not yet know about those SDK keys. This has been fixed so it will return a 503 status if it does not yet have a full configuration. (#113)
  • In offline mode, the Relay Proxy could still try to send analytics events to LaunchDarkly if you explicitly set sendEvents = true. Now, it will never send events to LaunchDarkly in offline mode, but enabling sendEvents will still cause the Relay Proxy to accept events, so that if SDK clients try to send events they will not get errors; the events will be discarded.
  • In offline mode, the Relay Proxy would still try to send internal usage metrics unless you explicitly set disableInternalUsageMetrics = true. Now, enabling offline mode automatically disables internal usage metrics.
  • Added a note in documentation to clarify that the Relay Proxy does not currently support clustered Redis or Redis Sentinel.
  • Fixed broken images in documentation.

6.1.0

10 Nov 02:36
Compare
Choose a tag to compare

[6.1.0] - 2020-11-09

Added:

  • The Relay Proxy now supports a new "offline mode" which is available to customers on LaunchDarkly's Enterprise plan. This mode allows the Relay Proxy to run without ever connecting it to LaunchDarkly. When running in offline mode, the Relay Proxy gets flag and segment values from an archive on your filesystem, instead of contacting LaunchDarkly's servers. To learn more, read the online documentation.

Fixed:

  • The contribution guidelines incorrectly indicated the minimum Go version as 1.13 instead of 1.14.

6.0.3

26 Oct 21:22
edd3a27
Compare
Choose a tag to compare

[6.0.3] - 2020-10-26

Fixed:

  • Fixed a dependency path that could cause a compiler error (code in directory $GOPATH/src/github.com/go-gcfg/gcfg expects import "gopkg.in/gcfg.v1") when building the Relay Proxy from source code in some cases.

6.0.2

20 Oct 22:49
0efc076
Compare
Choose a tag to compare

[6.0.2] - 2020-10-20

Fixed:

  • If a flag or segment was deleted in LaunchDarkly after the Relay Proxy started up, SDK clients that connected to Relay Proxy endpoints after that point could receive an unexpected null value for that flag or segment in the JSON data. This would cause an error in some SDKs causing their stream connections to stop working. This bug was introduced in version 6.0.0.
  • When forwarding events from a PHP SDK, the Relay Proxy might omit information about private user attributes (that is, the existence of the attribute would be lost; it would not become non-private). This bug was introduced in version 6.0.0.
  • In automatic configuration mode, there was a memory leak when a previously active environment was removed from the configuration: the Relay Proxy could fail to dispose of the in-memory data and worker goroutine(s) related to that environment.

6.0.1

08 Oct 20:03
Compare
Choose a tag to compare

[6.0.1] - 2020-10-08

Fixed:

  • When sending flag/segment JSON data to SDKs or storing it in a database, properties with default values (such as false booleans or empty arrays) were being dropped entirely to save bandwidth. However, some of the LaunchDarkly SDKs do not tolerate missing properties, so this has been fixed to remain consistent with the less efficient behavior of previous Relay Proxy and Go SDK versions.
  • When using automatic configuration mode, under some circumstances the Relay Proxy might make an unnecessary attempt to contact LaunchDarkly using an expired SDK key, which would fail. This did not affect use of the current SDK key, but it would cause a misleading error message in the log.

6.0.0

07 Oct 17:32
Compare
Choose a tag to compare

[6.0.0] - 2020-10-07

For more details on changes related to configuration, read the configuration documentation.

Added:

  • The Relay Proxy now supports a new mode named "automatic configuration" which is available to customers on LaunchDarkly's Enterprise plan. This mode allows environments and their credentials can be configured dynamically rather than having to be manually configured ahead of time. To learn more, read the online documentation.
  • Secure mode can be enabled for an environment by setting SecureMode = true for that environment in the configuration file, or LD_SECURE_MODE_MyEnvName if using environment variables. This is separate from the setting for secure mode on the LaunchDarkly dashboard, which the Relay Proxy is not able to access.
  • The new DisconnectedStatusTime configuration property controls how long the Relay Proxy will tolerate a stream connection being interrupted before reporting a "disconnected"/"degraded" status in the status resource.
  • The new MaxClientConnectionTime configuration property can make the Relay Proxy drop client connections automatically after some amount of time, to improve load balancing. (#92)
  • The Consul integration now supports ACL tokens with the Token and TokenFile configuration properties.
  • The new DisableInternalUsageMetrics configuration property allows turning off the internal analytics that the Relay Proxy normally sends to LaunchDarkly.
  • The /status endpoint now includes more information about the LaunchDarkly connection status, database connection status (if applicable) and database configuration (if applicable). To learn more, read Service endpoints. (#104)

Changed (breaking changes in configuration):

  • Relay will now print an error and refuse to start if there is any property name or section name in a configuration file that it does not recognize. Previously, it would print a warning but then continue. This change was made because otherwise it is easy to misspell a property and not notice that the value is not being used.
  • All configuration settings that represent a time duration must now be specified in a format that includes units, such as 3s for 3 seconds or 5m for 5 minutes. The affected settings include [Main] HeartbeatInterval (HEARTBEAT_INTERVAL), [Events] FlushInterval (EVENTS_FLUSH_INTERVAL), [any database] LocalTTL (CACHE_TTL), and [any environment] TTL (LD_TTL_envname).
  • Previously, environment variables that have a true/false value were assumed to be false if the value was anything other than true or 1. Now, any value other than true, false, 0, or 1 is an error.
  • All configuration settings that represent port numbers now cause an error if you set them to zero or a negative number. The same is true of the event capacity setting.
  • The environment variable name LD_TTL_MINUTES_envname is no longer supported. Use LD_TTL_envname instead.
  • The environment variable name REDIS_TTL is no longer supported. Use CACHE_TTL instead.
  • The setting [Events] SamplingInterval (SAMPLING_INTERVAL) is no longer supported.

Changed (breaking changes when building the Relay Proxy):

  • When building the Relay Proxy, you must use Go 1.14 or higher and Go modules.
  • The build command is now just go build, rather than go build ./cmd/ld-relay.

Changed (breaking changes when using the Relay Proxy as a library):

  • When using the Relay Proxy as a library, you must use Go 1.14 or higher and Go modules.
  • The base import path is now github.com/launchdarkly/ld-relay/v6 instead of gopkg.in/launchdarkly/ld-relay.v5.
  • The import path for the Relay type is now github.com/launchdarkly/ld-relay/v6/relay.
  • The Config structs are now in a config subpackage. The types of many fields have changed to types that prevent creating a configuration with invalid values (for instance, OptURLAbsolute for URL fields instead of string).
  • There is no longer a DefaultConfig. Instead, Relay automatically uses the appropriate default values for any configuration fields that are not set.

Changed (other):

  • The prebuilt binaries for Relay Proxy releases no longer include a 32-bit Darwin/MacOS version; current versions of Go only support 64-bit for Darwin. The Linux binaries still include both 32-bit and 64-bit.
  • The documentation in the source code repository has been reorganized into multiple files for clarity, so README.md is now only a summary with links to the other files.

Removed:

  • The undocumented InsecureSkipVerify configuration property has been removed.

5.12.2

24 Sep 00:46
Compare
Choose a tag to compare

[5.12.2] - 2020-09-23

Fixed:

  • The prebuilt Linux Docker image contained version 1.1.1c of openssl, which had several known security vulnerabilities. The image now contains version 1.1.1g of openssl, and also uses the more current 3.12.0 version of the Alpine Linux distribution rather than 3.10.2.
  • Fixed instabilities in the CI build.

5.12.1

10 Aug 17:04
Compare
Choose a tag to compare

[5.12.1] - 2020-08-10

Fixed:

  • The configuration section of README.md mistakenly referred to MinTlsVersion and MIN_TLS_VERSION as MinTlsLevel and MIN_TLS_LEVEL. This release simply fixes the documentation error; the behavior of Relay Proxy has not changed.