Skip to content

Releases: launchdarkly/erlang-server-sdk

1.5.0

23 Jun 16:32
Compare
Choose a tag to compare

[1.5.0] - 2022-06-23

Changed:

  • Updated certifi to 2.9.0.
  • Updated shotgun to 0.5.3. This should obviate the need to override shotgun in mix.exs for Elixir projects.

Fixed:

  • Updated URI parsing to work with OTP 25. Removing the usage of http_uri:parse and replacing it with uri_string:parse.

1.4.0

20 Apr 22:53
Compare
Choose a tag to compare

[1.4.0] - 2022-04-20

Added:

  • ldclient:all_flags_state/3 to be used instead of ldclient:all_flags_state/1 or /2 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. It does NOT yet support selecting client-side-enabled flags.
  • ldclient_testdata is a new way to inject feature flag data programmatically into the SDK for testing—either with fixed values for each flag, or with targets and/or rules that can return different values for different users. Unlike the file data source, this mechanism does not use any external resources, only the data that your test code has provided.
  • Support for the SDK test harness.

Fixed:

  • An issue with handling firstName and lastName in rules. The SDK uses first_name and last_name atoms for these fields and there was an issue with when the attribute names were converted. Now name conversion for attributes are done after evaluation and processing of private attributes.
  • ldclient:track and ldclient:tack_metric will not allow for types other than map() to be used for data.
  • The SDK was sending identify events for users with an empty key when it should not.
  • The SDK would send duplicate events for a user which had been identified and then was noticed by a feature evaluation. Now the event will be de-duplicated correctly within the LRU cache timeout.
  • Rule matches against dates in the user object, which could not be parsed, would cause evaluation to fail and return the default value. Now they will correctly result in the rule not matching instead.
  • The configuration was not trimming trailing / from URLs.

Changed:

  • Event fields which contained false or null will not generally be omitted from events for compactness.
  • Clarifications to documentation.

1.3.2

30 Dec 21:52
Compare
Choose a tag to compare

[1.3.2] - 2021-12-30

Fixed:

  • The file file_auto_update feature was not working correctly. If the flag files did not contain any changes between polling intervals, then the file system watcher would crash. (Thanks, matt-glover!)

1.3.1

09 Nov 18:11
Compare
Choose a tag to compare

[1.3.1] - 2021-11-09

Fixed:

  • Updated the options() typings for ldclient_instance:start to include missing configuration options. These included redis configuration, ld relay configuration, cache ttl, file data source configuration, and the http options. This is not a functionality change, but will correct issues reported by the dialyzer.

1.3.0

03 Nov 22:06
Compare
Choose a tag to compare

[1.3.0] - 2021-11-03

Added:

  • Support for configuring HTTP options. Including:

    • The ability to specify custom headers.
     ldclient_config:parse_options("sdk-key", #{
       http_options => #{
           custom_headers => [
               {"Basic-String-Header", "String"},
               {"Binary-String-Header", "Binary"}
           ]}
       }),
    
    • The ability to specify a custom connect timeout.
    ldclient_config:parse_options("sdk-key", #{
        http_options => #{
            connect_timeout => 2000
        }
    }),
    
    • The ability to specify a custom TLS configuration.
      The default behavior for OTP is to use verify_none for TLS verification. If no configuration is specified, then the SDK will inherit this behavior.
    ldclient_config:parse_options("sdk-key", #{
        http_options => #{
            %% This is a list of tls_client_options()
            %% https://www.erlang.org/doc/man/ssl.html#type-tls_client_option
            tls_options => ldclient_config:tls_basic_options()
        }
    }),
    
    • A number of TLS configuration helpers. A full TLS configuration can be specified, but these methods provide a number of basic configurations.
      • ldclient_config:tls_basic_options() -> [ssl:tls_client_option()]
        Create a basic TLS configuration which will try to use a default location for certificate authority store.
        If that store is not present, then instead the configuration will use a certifi store which is a Rebar3 dependency.
      • ldclient_config:tls_basic_linux_options() -> [ssl:tls_client_option()]
        Create a basic TLS configuration which will use a default location for a certificate store. If the store is not present, then it will produce an error.
      • ldclient_config:tls_ca_certfile_options(CaStorePath :: string()) -> [ssl:tls_client_option()]
        Create a basic TLS configuration with the specified certificate store. If the store is not present, then it will produce an error.
      • ldclient_config:with_tls_revocation(Options :: [ssl:tls_client_option()]) -> [ssl:tls_client_option()]
        Decorate a configuration with revocation checks. Currently revocation checks are not cached in OTP, so this will result in additional requests for each HTTP request.
      • ldclient_config:tls_basic_certifi_options() -> [ssl:tls_client_option()]
        Create a basic TLS configuration which will use the certifi store specified in the Rebar3 dependencies.

1.2.0

18 Oct 20:23
Compare
Choose a tag to compare

[1.2.0] - 2021-10-18

Added:

  • The SDK now supports the ability to control the proportion of traffic allocation to an experiment. This works in conjunction with a new platform feature now available to early access customers.
  • The SDK now supports the ability to read flags from a file.

1.1.3

27 Sep 16:23
Compare
Choose a tag to compare

[1.1.3] - 2021-09-27

Fixed:

  • When a rule was missing both the rollout and the variation, and that rule was matched, then variation 0 would be returned instead of the default value.
  • When a fall-through was missing both a rollout and a variation, then null would be returned instead of the default value.

1.1.2

14 Sep 01:05
Compare
Choose a tag to compare

[1.1.2] - 2021-09-13

Fixed:

  • The SDK now forces connections to use HTTP/1.1 instead of the newer HTTP/2 protocol as an underlying dependency does not yet support HTTP/2. This change does not impact current behavior as LaunchDarkly’s servers do not yet accept requests with HTTP/2; however, this SDK change ensures operational continuity when LaunchDarkly’s services enable HTTP/2 compatibility.
  • The SDK is more resilient when opening an SSE connection, processing events from the stream, and evaluating feature flags.

1.1.1

06 Aug 18:53
Compare
Choose a tag to compare

[1.1.1] - 2021-08-06

Changed:

  • Updated the eredis dependency to version 1.4.0. (Thanks, jeffgrunewald!)
  • Updated the jsx dependency to version 3.1.0. (Thanks, bitwalker!)
  • Updated the uuid dependency to version 2.0.2. (Thanks, jeffgrunewald!)
  • Expanded test coverage to include OTP 24.

1.1.0

06 May 22:39
Compare
Choose a tag to compare

[1.1.0] - 2021-05-06

Added:

  • ldclient:alias/2 and ldclient:alias/3 functions. These can be used to associate two user objects for analytics purposes with an alias event.