All notable changes to this project will be documented in this file.
- The Stackable scaler now ensures that a
TrinoClusterhas changed toreadymore than 5 seconds ago before marking it asready(#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 intoAddress 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).
- Set connection and response timeout for Redis connections (#85).
- Support configuring compression for OTEL (#70).
- Improve tracing details by adding a
tower_http::trace::TraceLayerthat 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-cliby default asks forgzipcompressed content (#74).
- Improve tracing for running queries on Trino, adding spans for the request to Trino and parsing (#71).
- Improve performance by using
serde_json::value::RawValuefor thedataandcolumnsattributes to avoid unneeded deserialization and serialization of them (#73). - Bumped to Rust 2024 edition (#76).
- Add the
libpython3-devpackage to the container image. This prevented the startup of trino-lb (#66).
- 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
Unhealthycluster state. This state is entered once the readiness check of a cluster in theReadystate fails. The cluster will remain in theUnhealthystate until the scaler marks that cluster asReadyagain.Unhealthyclusters 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).
- Set defaults to oci (#57).
- Reduce max poll delay from 10s to 3s to have better client responsiveness
- Fix division by zero when all clusters of a cluster group are not ready to accept queries (#47).
- Install default crypto provider, this prevent servers using https from starting (#45).
- Added a configuration to specify the port numbers for
http,httpsandmetrics(#43).
- 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
opentelemetry0.23 -> 0.24,kube0.92 -> 0.93 andredis0.25 -> 0.26 (#41).
- URL-escape trino cluster credentials (#40).
- 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).
- Use redis
ConnectionManagerto 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 aConnectionManager(#34).
- BREAKING: Add support for single instance redis persistence (without Redis cluster mode).
This is breaking, because you need to set
trinoLb.persistence.redis.clusterMode: truein your config to keep using the cluster mode (#15).