Skip to content

v1.89.0

Latest

Choose a tag to compare

@laidbacklevi laidbacklevi released this 13 Jul 12:11

Features

  • gRPC connection pooling (#2493, #2511, #2509): Per-peer dynamic gRPC connection pool with YAML configuration (clientConnectionPool: min/max connections, concurrent stream limits, scale-up/down thresholds, idle timeout, dynamic scaling). Includes transport-level connection pool metrics and concurrent stream limit enforcement.
  • Thrift auth.actor_uuid annotation (#2488): Codegen support for (auth.actor_uuid = "true") on Thrift method arguments and struct fields.
  • Server UUID validation (#2495): Server supports wiring a user-provided validator in the Thrift handler when auth.actor_uuid is present. Invalid UUIDs return InvalidArgument.
  • HTTP proxy header allowlist (#2502): Server-side only (1 of 2). YARPC HTTP inbound now recognizes unprefixed proxy-managed headers (x-forwarded-for, x-forwarded-proto, x-forwarded-port, x-request-id, x-uber-source, via, user-agent) set by Muttley/Envoy. Previously these were silently dropped because they lacked the rpc-header- prefix. When both prefixed and unprefixed forms are present, the prefixed value wins deterministically. No application code changes required — just bump the yarpc-go dependency. A follow-up diff will update the client/outbound side to stop prefixing these headers, once all servers are deployed with this change.

Bug fixes

  • Phased startup abort (#2510): Fix data race during phased startup abort by stopping lifecycles serially in reverse (LIFO) order, so dependents stop before their dependencies.
  • Snappy decompressor (#2508): Fix double-Put corrupting pooled snappy readers.

Other

  • Logging (#2514): Downgrade selected error logs to warnings.
  • Tests (#2517): Expanded gRPC integration test coverage.