Skip to content

Releases: configcat/configcat-proxy

v1.0.0

11 Apr 13:25
39c1f26
Compare
Choose a tag to compare

Changed

  • Marking the current state as the first stable version. 🎉
  • Dependency updates due to vulnerability reports.

v0.5.0

27 Mar 16:31
73b722b
Compare
Choose a tag to compare

Added

  • Support for two more external cache providers:
    • MongoDB
    • DynamoDB

Changed

  • The Proxy now uses a single cache client for each ConfigCat SDK instead of one client / SDK.
  • ConfigCat SDKs are now managed within a single service to prepare for an auto-configuration feature where an external source could dynamically determine the SDK list within the Proxy. (possibly fetched from the ConfigCat Public API)

v0.4.2

14 Mar 13:08
27566ea
Compare
Choose a tag to compare

Added

  • Option to turn gRPC health check service on/off.

    grpc:
      health_check_enabled: true # default: true
  • Option to turn gRPC server reflection on/off.

    grpc:
      server_reflection_enabled: true # default: false
  • Option to control the keep-alive settings of the gRPC server.

    grpc:
      keep_alive: 
        # these values are only examples
        max_connection_idle: 15 # If a client is idle for 15 seconds, send a GOAWAY
        max_connection_age: 30 # If any connection is alive for more than 30 seconds, send a GOAWAY
        max_connection_age_grace: 5 # Allow 5 seconds for pending RPCs to complete before forcibly closing connections
        time: 5 # Ping the client if it is idle for 5 seconds to ensure the connection is still active
        timeout: 1 # Wait 1 second for the ping ack before assuming the connection is dead
  • Option to turn off the main HTTP server in case of gRPC-only usage.

    http:
      enabled: false # default: true
  • Two more metric indicators:

    • configcat_grpc_rpc_duration_seconds: Histogram of RPC calls (duration/count).
      • Tags:
        • method: Name of the RPC service method.
        • code: Response status code.
    • configcat_stream_msg_sent_total: Total number of all messages sent with streaming.
      • Tags:
        • sdk: The related SDK's identifier.
        • type: sse or grpc.
        • flag: The flag's key that was evaluated.
  • Detailed RPC debug logging for gRPC calls. It is enabled automatically when the gRPC's logging option is set to debug.

Changed

  • Two more status indicators were added to the /status endpoint's content down and initializing. Each SDK node starts with the initializing status, and later, when initialized, it switches to one of the remaining (healthy, degraded, or down) statuses.
    The proxy's status becomes down when each SDK has down status. It becomes degraded when at least one degraded or down SDK exists.
    • down means that the related SDK can't accept evaluation requests because it doesn't have a valid config JSON (neither from cache nor from the ConfigCat CDN) to work with.
    • degraded means that the related SDK has a valid config JSON in its memory or from the external cache, but the last two refresh attempts failed, so it might work with stale config JSON data.
  • SSE and gRPC stream requests are now rejected when the related SDK doesn't have a valid config JSON to work with or when the requested feature flag key doesn't exist. These requests were accepted before but got a null result through the built-up connection.

v0.4.1

07 Mar 16:17
Compare
Choose a tag to compare

Fixed

  • Error handling of a wrong TLS certificate. An error is logged if the certificate or key file is missing or invalid, and the proxy exits with an error code.

v0.4.0

07 Mar 09:53
a6eed5a
Compare
Choose a tag to compare

Added

  • #17: Ability to host the /status endpoint on either (or both) the main (default :8050) or the diagnostics (default :8051) HTTP ports. By default, it's enabled for the diagnostics port (default :8051) only.
    • Enabling for the main HTTP port:
      http:
        # port: 8050
        status:
          enabled: true
    • Enabling for the diagnostics HTTP port:
      diag:
        # port: 8051
        status:
          enabled: true 

Fixed

  • #18: When a non-existing feature flag key is posted to the /api/{sdkId}/eval endpoint, the response is now a 400 Bad request instead of the 500 Internal server error.

Breaking Changes

  • By default, the /status endpoint is not enabled anymore on the main HTTP port (default :8050). Instead, if not configured otherwise, it's only available on the diagnostics port (default :8051).
  • The /metrics endpoint configuration (along with the /status endpoint's configuration) is moved under the diag configuration node.
    Before:
    metrics: 
      port: 8051
      enabled: true
    Now:
    diag:
      port: 8051 #<-- port of the diagnostics webserver (that will host the private '/metrics' and '/status' endpoints)
      enabled: true #<-- controls whether the diagnostics webserver should run or not
      status:
        enabled: true #<-- controls whether the '/status' endpoint should be enabled on the diagnostics HTTP (8051) port
      metrics:
        enabled: true #<--controls whether the '/metrics' endpoint for Prometheus should be enabled on the diagnostics HTTP (8051) port 
    The names of the metrics related environment variables were also changed:
    • CONFIGCAT_METRICS_ENABLED => CONFIGCAT_DIAG_METRICS_ENABLED
    • CONFIGCAT_METRICS_PORT => CONFIGCAT_DIAG_PORT

v0.3.1

15 Feb 12:47
Compare
Choose a tag to compare

Changed

  • Bump dependencies to the latest version.

v0.3.0

10 Jan 18:05
Compare
Choose a tag to compare

Changed

  • The user object passed to the API / SSE endpoints now accepts the following field types (instead of just string): string, number, string[].

Breaking changes

  • The CDN proxy endpoint now serves the new config JSON v6 format. Therefore, only those SDK versions can be pointed to the proxy that already supports this format. The actual support table is available in the docs. Not supported SDKs must be used with an earlier proxy version (<v0.3.0).
  • The user map passed over gRPC in the EvalRequest message now accepts a new UserValue type, which allows the setting of a double, string, google.protobuf.Timestamp, and a StringList as user attribute. See the updated docs of the service definition.

v0.2.4

29 Nov 21:53
Compare
Choose a tag to compare

Fixed

  • GZip compression related issue.

v0.2.3

10 Nov 18:44
8b7d63b
Compare
Choose a tag to compare

Fixed

  • Headers listed in auth_headers option are now put into the Access-Control-Allow-Headers CORS header.
  • Headers listed in headers option are now put into the Access-Control-Expose-Headers CORS header.

v0.2.2

12 Oct 16:32
Compare
Choose a tag to compare

Changed

  • Updated dependencies due to vulnerability report.
  • Corrected reported version in X-ConfigCat-UserAgent header.