Skip to content

Latest commit

 

History

History
202 lines (132 loc) · 8.66 KB

CHANGELOG.md

File metadata and controls

202 lines (132 loc) · 8.66 KB

Changelog

All notable changes to this project will be documented in this file.

[Unreleased]

Changed

  • Replace the deprecated serde_yaml crate with the maintained yaml_serde fork (#123).

[0.7.0] - 2026-08-03

Changed

  • Switch from the older (forked) prusto crate to trino-rust-client (#116).

Fixed

  • Handle Redis connection errors (e.g. broken pipe during master failover) gracefully instead of panicking. Previously, get_queued_query_count would .unwrap() on the Redis result, causing a panic that poisoned the metrics RwLock, cascading into further panics and leaving pods unresponsive (#111).
  • Point the forwarding related headers (Host, X-Forwarded-Host, X-Forwarded-Proto and X-Forwarded-Port) of proxied client requests at the configured externalEndpoint of the Trino cluster. Trino builds the absolute URLs it hands out to clients from these headers, so previously they pointed at trino-lb. Most notably this broke the OAuth 2.0 flow: Trino put the trino-lb address into the x_redirect_server and x_token_server of its WWW-Authenticate challenge, so clients were sent to https://<trino-lb>/oauth2/token/{id}, which trino-lb answered with a 404. The RFC 7239 Forwarded header is now removed as well, as it takes precedence over the X-Forwarded-* headers. This is a no-op for Trino clusters without an externalEndpoint (#119).

[0.6.0] - 2026-02-17

Added

  • Support activating and deactivation Trino clusters via API calls to /admin/clusters/{cluster_name}/activate and /admin/clusters/{cluster_name}/deactivate respectively. For this to work you need to authenticate yourself at trino-lb via basic auth (#95).
  • Expose cluster statistics at /admin/clusters/{cluster_name}/status and /admin/clusters/status (#95).
  • Support configuring an external endpoint of Trino clusters. This is used to update the segments ackUris to, as sometimes Trino get's confused and put's the wrong endpoint (namely the one of trino-lb) in there. Please note that this runs a database migration on Postgres (#100).

Changed

  • The Stackable scaler now ensures that a TrinoCluster has changed to ready more than 5 seconds ago before marking it as ready (#68).
  • Emit less attributes in tracing to make logs easier readable (#86).
  • BREAKING: Only bind to IPv4 (0.0.0.0) instead of IPv6 (::). On most Linux systems, binding to :: dual-stacks, on Windows this would likely bind to IPv6 only. As a user reported that they run into Address family not supported by protocol (os error 97), we now only bind to IPv4. There was some attempt to make it portable work on IPv4 and IPv6 (optional), but that turned out to be a bigger story for later (#91).

Fixed

  • Set connection and response timeout for Redis connections (#85).
  • Only remove queries from the persistence in case they don't send a nextUri and are in state FINISHED (#98).
  • Correctly proxy HEAD requests to /v1/statement/executing/{queryId}/{slug}/{token}. Previously, we would GET (instead of HEAD) the URL at the Trino cluster, which resulted in trino-lb dropping the HTTP body, causing problems (#100).

[0.5.0] - 2025-03-14

Added

  • Support configuring compression for OTEL (#70).
  • Improve tracing details by adding a tower_http::trace::TraceLayer that creates spans for every HTTP request (#71).
  • Support compressing HTTP contents, previously the content was always uncompressed. This consumes more CPU, but also reduces the data amount sent to Trino clients. E.g. trino-cli by default asks for gzip compressed content (#74).

Changed

  • Improve tracing for running queries on Trino, adding spans for the request to Trino and parsing (#71).
  • Improve performance by using serde_json::value::RawValue for the data and columns attributes to avoid unneeded deserialization and serialization of them (#73).
  • Bumped to Rust 2024 edition (#76).

[0.4.1] - 2025-03-03

Fixed

  • Add the libpython3-dev package to the container image. This prevented the startup of trino-lb (#66).

[0.4.0] - 2025-02-28

Added

  • Support configuring the scaler reconcile interval (#61).
  • Add simple web-based dashboard that shows the current state and query counts of all clusters. This makes it easier to debug state transitions of clusters (#62).
  • Add Unhealthy cluster state. This state is entered once the readiness check of a cluster in the Ready state fails. The cluster will remain in the Unhealthy state until the scaler marks that cluster as Ready again. Unhealthy clusters won't get any new queries; if all clusters are unhealthy, new queries will be queued. The cluster health check interval can be configured using the scaler reconcile interval (#63).

Changed

  • Set defaults to oci (#57).

Fixed

  • Reduce max poll delay from 10s to 3s to have better client responsiveness

[0.3.2] - 2024-08-20

Changed

  • Don't use the aws-lc-rs crate (introduced in #45), as it broke the Tilt build (#46).

Fixed

  • Fix division by zero when all clusters of a cluster group are not ready to accept queries (#47).

[0.3.1] - 2024-08-16

Fixed

  • Install default crypto provider, this prevent servers using https from starting (#45).

[0.3.0] - 2024-08-15

Added

  • Added a configuration to specify the port numbers for http, https and metrics (#43).

Changed

  • BREAKING: Ensure no unknown config properties have been set. This is to make the user aware that what he tried to configure is not a valid configuration. You may need to adapt your configuration and remove any unknown properties (#43).
  • Bump dependencies, such as opentelemetry 0.23 -> 0.24, kube 0.92 -> 0.93 and redis 0.25 -> 0.26 (#41).

[0.2.3] - 2024-07-01

Fixed

  • URL-escape trino cluster credentials (#40).

[0.2.2] - 2024-06-28

Fixed

  • Periodically set all clusters that are not scaled to Ready. Previously this was only done during startup, which caused problems when the persistence was wiped while trino-lb is running (#37).

[0.2.1] - 2024-06-21

Fixed

  • Use redis ConnectionManager to reconnect on Redis connection failures. Previously trino-lb would stop working once the Redis Pod restarted. This change only affects the single Redis instance connection, not the cluster mode connection, as a ClusterConnection does not seem to support a ConnectionManager (#34).

[0.2.0] - 2024-04-07

Added

  • BREAKING: Add support for single instance redis persistence (without Redis cluster mode). This is breaking, because you need to set trinoLb.persistence.redis.clusterMode: true in your config to keep using the cluster mode (#15).

[0.1.0] - 2024-01-16