v2.9.0-rc.1
Pre-release
Pre-release
·
13 commits
to main
since this release
This release adds OAuth2/OIDC SSO login to the management UI, sends publish confirms only after messages are flushed to disk (with a --no-sync opt-out), verifies PROXY protocol trusted sources, switches to Crystal's native kTLS support and supports per-queue-type policy apply-to targets. It also brings a number of stream, clustering and HTTP API fixes.
Added
- OAuth2/OIDC SSO login to the management UI #1768
proxy_protocol_trusted_sourcesconfig option supporting individual IPs and CIDR notation #1601- Startup warning when PROXY protocol is enabled without
proxy_protocol_trusted_sourcesconfigured #1601 load_definitionsconfig option #1828- Per-queue-type policy
apply-totargets (classic_queues,quorum_queues,streams) for RabbitMQ definitions compatibility #2015 - Bindings count in overview, CLI status and Prometheus metrics #2018
- Per-vhost message stats and labeled channel metrics in
/metrics/detailed#1926 --no-syncoption to disable syncfs on publish confirm #1987control_unix_pathconfig option to make the lavinmqctl control socket path configurable #2029- User tag classes to control management UI element visibility #1892
Changed
- Send publish confirms only after messages are flushed to disk with
syncfs#1891 - Use Crystal's native kTLS support #1937
- Fiber-free synchronous replication a011ec99
- On-demand deliver_loop fibers for AMQP consumers #1722
- Idle fiber management for queue message expiration #1614
- Replace periodic GC.collect with on-demand GC #2016
- Batch persistence during definitions import #2014
tcp_proxy_protocolnow accepts boolean values (true/false/yes/no); legacy1/2are treated as enabled,0disables. Protocol version is auto-detected #1601- Print clean error messages on boot failures instead of stacktraces aba7361b
- Group
lavinmqctlhelp output by command category #1830 - Use
amq.defaultin UI related operations #1913 - New action bar for tables with row counter and column selector #1900
- Bake static assets as string literals to reduce compile memory #1944
- Bump amq-protocol to 1.2.0 #1996
- Update amqp-client to 1.3.3, lz4 and systemd 3.0.1 dependencies cd2f4c58
Removed
unix_proxy_protocolconfig option; Unix sockets always auto-detect PROXY protocol headers #1601
Fixed
GET /api/queues/:vhost/:nameno longer emits themessage_statsfield twice #2031GET /api/channelsandGET /api/connectionsno longer include the per-metric rate-historylogarrays in every list row, matchingGET /api/queues. The logs are only needed by the per-object detail pages, so they are now returned solely byGET /api/channels/:nameandGET /api/connections/:name, greatly reducing list response size and latency on large deployments #2025- Skip the message-expire fiber on streams to avoid a
Closed mfilecrash when the last consumer disconnects after retention dropped segments ded4b69b - Discard settlement frames (
ack/nack/reject) for an already-closed channel instead of closing the connection withCHANNEL_ERRORf421d6e3 - Treat a publish to a concurrently-closed queue as dropped instead of raising, which previously surfaced as an HTTP publish
50093f88429 - Stop federation and shovel links before tearing down vhosts on shutdown, and keep the embedded amqp-client's routine connection-teardown logging (already reported via the
lmq.*federation/shovel layers) out of the broker log 2b213d3c - Reply with
Basic.GetEmptyinstead of erroring when abasic_getraces a concurrent queue delete 9fbf4dc4 - Serialize store saves (vhosts, parameters, users) so concurrent create/delete (under churn) don't race on the shared
.tmpfile and fail the rename f2316d0d - Don't crash the MQTT brokers on a vhost
Closedevent for a vhost that was never registered (e.g. one whose create didn't finish) fcf592c4 - Serialize per-resource policy application and run stream
drop_overflowunder the message-store lock, fixing a segfault when policies were applied to a queue concurrently (e.g. under policy churn) with publishing/consuming 7f4b8399 - Race between stream queue delete and
drop_overflow#1939 - Stream queue crash when delivery-limit policy is applied d3667f99
- Handle empty trailing stream segment on load 4efe79c4
- Serialize stream consumer-offset access under the message-store lock for MT safety #1973
- Skip
delete_messageafter queue close #1961 MessageStoresize leaks inpurge_alland requeuedshift?#1957- Handle reject-publish overflow in HTTP publish and multi-queue routes #1958
- Keep closing AMQP channels until close-ok #1980
- MQTT max inflight message flow control #1935
- Exit if etcd lease expires while waiting to be in sync #1969
- Wait lease TTL + 2 seconds before retrying etcd lease grant 57d898cd
- Delete empty queue directories on followers during streaming #2005
- Broker start failure for passwordless users with
nullhashing_algorithm #1898 - Anchor server uptime and CPU counters to OS process lifetime #2012
- Use
:vhostnamed parameter forDELETEvhost-limits route #1994 - OpenAPI docs fixes #2004
- Log
kTLS=offinstead ofkTLS=when offload is inactive #2019 - MQTT packet ID overflow in lavinmqperf #1997
-qflag collision between QoS and quiet in mqttperf #1951- Smooth pacing in lavinmqperf AMQP throughput 85711b32