Unreleased Changes in The Mainline
Breaking Changes
Other Changes and Enhancements
-
Queue and Egress configs can now be set to work in a mode where they refresh when the underlying configuration files have changed, rather than always reloading on a schedule. This makes a difference for sites with many queues. This mode is used for the shaping and queue helpers.
-
Improved performance of
/metrics
and/metrics.json
endpoint generation; these endpoints now stream data rather than buffering and sending to the client. This makes a big difference for systems with over 1 million queues. -
kcli top
andkcli queue-summary
now use streaming mertrics parsers to improve latency with systems with over 1 million queues. -
HTTP clients can now opt-in to compressed responses by setting their
Accept-Encoding
header. We supportgzip
anddeflate
compression. Compression is set toFastest
rather thanBest
, which produces good results without costing too much CPU or request latency. We do not support compressed bodies at this time. -
Optimized per-message overheads in the scheduled queue, reduced the memory utilization by 112 bytes per message.
-
Changed the default queue strategy to
SingletonTimerWheel
. -
kcli trace-smtp-client
andkcli trace-smtp-server
both have some new options:--terse
to make it easier to get the sense of the flow of messages without seeing all of the message body data,--only-new
to trace only sessions for which the tracer client has observed the session opening, and--only-one
to trace just a single session. -
The HTTP injection API now supports an optional
deferred_spool
parameter that allows deferring writing the message(s) spool for a given send attempt,deferred_generation
for quickly accepting a batch for asynchronous generation, and you can control a rate limit for ingress using kumo.set_httpinject_recipient_rate_limit. -
We now randomize the set of hosts within a given MX preference level when computing the connection plan for an individual session. This helps to probablistically load balance across the advertised hosts for the destination.
Fixes
-
kcli trace-smtp-client
andkcli trace-smtp-server
would always report0ns
for sessions for which we had not observed the session opening. Now we will assume a start time time of the first record observed for a session, so that some sense of relative time can be gleaned from the trace output. -
When using the dkim helper and splitting the configuration across multiple files, a missing
domain
orbase
configuration section in any individual file would raise a validation error.