Skip to content

0.297.0

Compare
Choose a tag to compare
@tas-runtime-bot tas-runtime-bot released this 15 May 14:17
· 283 commits to develop since this release

Changes

  • 🐛FIXES KNOWN ISSUE Gorouter now correctly returns the status code provided by backends for workflows using 100-continue, or other 1xx interim status codes. Thanks for catching this @plowin @domdom82 and thanks @geofffranks for the quick fix!
  • 🐛The TLS listener for the health status endpoint in gorouter now handles custom cipher-suites that do not include any of the required HTTP/2 ciphers. Thanks @MarcPaquette + @geofffranks!
  • 🐛 Failing to establish a TCP connection to a backend no longer causes a panic when setting up a WebSocket connection. Thanks @domdom82!
  • ✨The health status endpoint for gorouter is now able to log error messages encountered when it starts up, to aid in troubleshooting. Thanks @MarcPaquette and @geofffranks !
  • ✨Gorouter now provides a missing_content_length_header metric that will flag requests that would have been hit by Golang 1.22's new check to reject requests that have an empty content-length header. This can be used to determine if an environment will be affected by disabling the go.httplaxcontentlength gorouter property. Thanks @mariash!
    • NOTE: The metric is counting requests unaffected by the new golang behavior and will be updated in 0.298.0+, where it is also renamed to empty_content_length_header.
  • ✨Route registrar now allows operators to specify load blancing algorithms for individual routes. Thanks @b1tamara and @domdom82 !
  • Bumped to golang 1.22.3

Bosh Job Spec changes:

diff --git a/jobs/route_registrar/spec b/jobs/route_registrar/spec
index c51dbb9f..de81a0e8 100644
--- a/jobs/route_registrar/spec
+++ b/jobs/route_registrar/spec
@@ -125,7 +125,8 @@ properties:
           with error, the route is unregistered.
         router_group (required, string, for tcp routes): Name of the router group to which the TCP route should be added.
         external_port (required, string, for tcp routes): Port that the TCP router will listen on.
-        server_cert_domain_name_modifier (optional, string, for sni routes): a regex replace to help with complicated hostnames
+        server_cert_domain_name_modifier (optional, string, for sni routes): a regex replace to help with complicated hostnames.
+        options (optional, object, for http routes): Custom per-route options
 
       health_check object
         name (required, string): Human-readable reference for the healthcheck
@@ -135,6 +136,9 @@ properties:
           the script is terminated with `SIGKILL` and the route is unregistered. Value is a string (e.g. "10s") and must parse to a positive time duration i.e. "-5s" is not permitted. Must be less than the value of `registration_interval`.
           Default: Half of the value of `registration_interval`
 
+      options object
+        lb_algo (optional, string): Load balancing algorithm for routing incoming requests to the backend: 'round-robin' or 'least-connection'. In cases where this option is not specified, the algorithm defined in gorouter spec is applied.
+
     example: |
       - name: my-service
         uris:
@@ -150,6 +154,8 @@ properties:
           script_path: /path/to/script
           timeout: 5s
         route_service_url: https://my-oauth-proxy-route-service.example.com
+        options:
+          lb_algo: least-connection
       - name: my-tls-endpoint
         tls_port: 12346
         server_cert_domain_san: "my-tls-endpoint.internal.com"

✨ Built with go 1.22.3

Full Changelog: v0.296.0...v0.297.0

Resources