Skip to content

v1.2.0

Latest

Choose a tag to compare

@alexluong alexluong released this 13 Aug 18:28
· 10 commits to main since this release
ce858ab

Note: This release includes a new PostgreSQL migration and one behavior change (RETRY_POLL_BACKOFF_MS). Run outpost migrate apply --yes before starting v1.2, and review the v1.2 Upgrade Guide.

Features

  • Custom dead-letter queue names for auto-provisioned SQS, RabbitMQ, and GCP Pub/Sub queues, so DLQs can follow your own naming convention instead of the derived default — this also unblocks BYO-queue deployments whose DLQs don't match the derived name by @ambroziepaval in #1033
  • New outpost config list command, printing the effective configuration after defaults, YAML, and environment variables are resolved, with the same masking as the startup log. It skips validation, so it still works when a required field is missing by @zahradm in #1038

Performance

  • The retry monitor now sleeps until the next retry actually comes due instead of polling Redis on a fixed interval, cutting idle Redis traffic from ~129.6M to ~86.4K commands per month per monitor. RETRY_POLL_BACKOFF_MS is redefined as a maximum idle sleep with a new default of 0 (auto) by @alexluong in #1026
  • Each provider now shares one HTTP client with a sized connection pool. Outpost previously built a client per destination, each with Go's default of two idle connections, so connection reuse collapsed above two concurrent deliveries to the same destination by @alexluong in #1021

Fixes

  • Invalid webhook signature templates now fail at startup and name the offending template. A malformed template previously passed startup and panicked the delivery worker on every event, including after restart by @alexluong in #1025
  • OpenTelemetry exporter and protocol resolve per signal. All three signals previously read the same OTEL_EXPORTER/OTEL_PROTOCOL pair, so enabling one signal enabled the other two against localhost:4317. The spec's OTEL_EXPORTER_OTLP_*_PROTOCOL variables are now honored by @alexluong in #1019
  • Stale deliveries_pkey and deliveries_default_pkey indexes renamed to attempts_* (migration 000010). Metadata-only, no table rewrite or downtime by @alexluong in #1031
  • Creating a destination past MAX_DESTINATIONS_PER_TENANT returns 400 Bad Request instead of 500 by @alexluong in #1010
  • CLI errors are printed before exiting non-zero. Every outpost failure previously exited 1 with nothing on stderr, which made outpost migrate failures indistinguishable from one another by @alexluong in #1034

Updates

  • Go 1.26.5 and a dependency refresh, addressing the CVEs in #1012 — including x/text norm.Iter (GO-2026-5970), reachable through webhook delivery, pgx, and Kafka SCRAM — plus GO-2026-6061 in grpc xDS by @alexluong in #1030
  • Docker base image upgraded from distroless/base-debian12 to debian13, as debian12 has reached security end of life by @8BitJonny in #1036
  • RETRY_POLL_BACKOFF_MS documented in the configuration reference and its resolved value logged at startup by @alexluong in #1040
  • Signature header template documentation no longer carries inline shell/JSON escaping, which broke .env, Compose, and YAML users; content and header template fields merged into one table by @alexluong in #1024
  • configdocsgen retired — it wrote to a docs path that no longer exists after the Markdoc migration by @alexluong in #1035, #1037

Small Fixes & QoL

  • Flaky and unrunnable test suites fixed: shared config map in parallel S3 subtests, at-least-once redelivery assumptions in the Kinesis consumer, and others by @alexluong in #1029

New Contributors

Full Changelog: v1.1.0...v1.2.0