Releases: launchdarkly/ld-relay
Releases · launchdarkly/ld-relay
6.1.0
[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
[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
[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
[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
[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, orLD_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
andTokenFile
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 or5m
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
or1
. Now, any value other thantrue
,false
,0
, or1
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. UseLD_TTL_envname
instead. - The environment variable name
REDIS_TTL
is no longer supported. UseCACHE_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 thango 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 ofgopkg.in/launchdarkly/ld-relay.v5
. - The import path for the
Relay
type is nowgithub.com/launchdarkly/ld-relay/v6/relay
. - The
Config
structs are now in aconfig
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 ofstring
). - 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
[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 ofopenssl
, 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
[5.12.1] - 2020-08-10
Fixed:
- The configuration section of
README.md
mistakenly referred toMinTlsVersion
andMIN_TLS_VERSION
asMinTlsLevel
andMIN_TLS_LEVEL
. This release simply fixes the documentation error; the behavior of Relay Proxy has not changed.
5.12.0
[5.12.0] - 2020-08-06
Added:
- There is a new configuration option for specifying the lowest allowable TLS version, when using the Relay Proxy as a secure server. This is
MinTlsVersion
in the[Main]
section of the configuration file, or the variableMIN_TLS_VERSION
if using environment variables. For instance, setting this option to1.2
means that all requests from clients must use TLS 1.2 or higher.
5.11.2
[5.11.2] - 2020-08-06
Changed:
- There is a
clientSideAvailability
property which will be sent by LaunchDarkly services in the future as an alternate way of indicating whether a flag is enabled for use by client-side/mobile JavaScript SDKs. Previous versions of the Relay Proxy did not support this property, so the more detailed availability features being added to the LaunchDarkly dashboard would not work for applications that connected through a Relay Proxy. This version adds that support.
5.11.1
[5.11.1] - 2020-07-07
Changed:
- Updated the README to have updated usage guidance and to fix outdated links.
Fixed:
- When proxying events, events that were received from JavaScript browser clients via the special image-loading endpoint (used if the browser does not support CORS) could be lost.
- When Prometheus metrics are enabled, the
/metrics
endpoint that Relay provides for the Prometheus agent to query was being added globally usinghttp.Handle
; that meant that if an application used Relay as a library, and usedhttp.ListenAndServe
with the default handler, it would have a/metrics
endpoint on its own port. This has been fixed so the endpoint is only defined on the Prometheus exporter's port. - Stream reconnections now use a backoff delay with jitter, instead of a fixed delay.