1983 Commits
Author SHA1 Message Date
Wez Furlong 34681880ff ci: try building ubuntu arm 2024-06-07 08:58:26 -07:00
Wez Furlong 93bef078ce ci: use matrix build for amazon arm 2024-06-07 08:53:47 -07:00
Wez Furlong 4e0a022650 ci: remove comment, bump amazon build on amd64 2024-06-07 07:53:04 -07:00
Wez Furlong 7f7c88b503 try building amazonlinux on arm 2024-06-07 06:10:34 -07:00
Wez Furlong 9aaec867e8 ci: remove other redundant get-deps 2024-06-07 06:10:01 -07:00
Wez Furlong 2136a67aeb ci: remove redundant get-deps call
It's not useful to run it in its own isolated step,
plus our builder image should be up-to-date enough
anyway
2024-06-06 21:17:46 -07:00
Wez Furlong 555bfded56 use arm-specific URL for nextest 2024-06-06 18:01:16 -07:00
Wez Furlong 9c20b9fbc4 ci: build builder images on wp
This is essentially a refactoring of the stuff that we've been running
on GH, but broken out to run on our woodpecker instance.

I've removed sccache from the image; it's actually been failing the
build on amazonlinux:2, but the GH action version of the build has
been showing up as green(!)
2024-06-06 17:33:37 -07:00
Wez Furlong 7776382f49 ci: switch to local filesystem storage for cache 2024-06-06 15:28:35 -07:00
Wez Furlong 8f13b73133 ci: prefer amd64 for existing workflows 2024-06-06 13:36:11 -07:00
Wez Furlong 5e530b2ddd ci: add tag event trigger 2024.06.04-5e530b2d 2024-06-04 06:45:23 -07:00
Nathalie Caiandncai 50e83b1148 ready_queue: move maintainer notify logic in dispatcher drop (#194)
* move maintainer notify logic in dispatcher drop

* rework dispatcher drop logic shape

---------

Co-authored-by: ncai <ncai@chapsvision.com>
2024.06.04-50e83b11
2024-06-04 05:45:26 -07:00
Wez Furlong 29e4ec312d provide helpful reminder that bouncing is async
closes: https://github.com/KumoCorp/kumomta/issues/191
2024-05-30 16:46:03 -07:00
Wez Furlong 5faf29fefe cargo update 2024-05-30 16:17:07 -07:00
Daniel Schaaff d8cc6d9881 switch to debian bookworm for runtime image
This matches the os used in cargo chef and should help minimize
breakage.

fix typo
2024-05-29 11:16:36 -07:00
Daniel Schaaff f7747d094a remove apt cache after package installs 2024-05-29 11:16:36 -07:00
Wez Furlong 1184178923 update vaultrs dep 2024-05-23 08:32:54 -07:00
Wez Furlong bcf30af5c0 remove duplicate quick-error dep; move to thiserror in dkim 2024-05-23 08:31:05 -07:00
Wez Furlong 9c7912612d dedup rustls deps, we now build only a single version
We do this by telling lapin to use openssl(!)
2024-05-23 07:53:24 -07:00
Wez Furlong f890b16cd2 remove a duplicate rustls from the build graph 2024-05-23 07:47:38 -07:00
Wez Furlong 7195c777c3 remove tokio-console debugging feature
I've never found this to be actually helpful; it has bugs and misreports
LocalSet related tasks as being forgotten, which happen to be the
dominant kind of task we use, and its presence in the build graph
pulls in a duplicate set of different versions of deps, extending
build times for no benefit.
2024-05-23 07:36:27 -07:00
Wez Furlong bbfa369f5b deps: update axum 2024-05-23 07:32:10 -07:00
Wez Furlong bf2bb13a0a remove duplicate indexmap from build graph 2024-05-23 07:08:24 -07:00
Wez Furlong 5c0362e49e cargo update 2024-05-23 06:57:47 -07:00
Wez Furlong 1530c6c02e fix: panic if rcpt to issued outside of a transaction 2024-05-18 08:47:36 -07:00
Wez Furlong cbcf5746f5 docs: fix broken doc build 2024-05-17 07:50:03 -07:00
Wez Furlong 03dfa7e870 docs: changelog for https://github.com/KumoCorp/kumomta/pull/179 2024-05-17 07:49:48 -07:00
Wez Furlong a55f726471 docs: utopia openapi doc description updates
The auto-generator changed how it splits the brief/full description
up when rendering it into the openapi spec.
2024-05-17 07:44:39 -07:00
Nathalie Caiandncai 3f480c9449 add prefix parameter for prometheus metrics (#179)
Co-authored-by: ncai <ncai@chapsvision.com>
2024-05-17 07:38:27 -07:00
Wez Furlong 331842d540 deps: update libunbound to 1.20.0 2024-05-08 05:40:49 -07:00
Wez Furlong 138a1eab72 kcli top: clock the thread pool data during error states
I noticed that these were static while the other time series
were moving to the left, so let's fix that!
2024-05-07 14:14:30 -07:00
Wez Furlong 86bde42c2f config: Mutex -> parking_lot::FairMutex 2024-05-07 13:15:45 -07:00
Wez Furlong 8d80c9fcfa traffic-gen: be more aggressive at re-opening connections for IO errors 2024-05-07 13:01:38 -07:00
Wez Furlong 1554f1bf53 spool: add spoolin pool
This is so that we don't over-saturate the RUNTIME/localset pool during
startup.  I observed that we can block `kcli top` for some time with
the new defaults for localset size, because the spoolin logic was
assuming that it could spawn more tasks than there were localset
threads.

This commit includes some tweaks to allow a thread pool to be short
lived and tear itself down, and some also in `kcli top` so that
we can sanely present the thread pool finishing up and going away.
2024-05-07 12:09:21 -07:00
Wez Furlong 1f8c1ea089 suspensions: make looking up a readyq suspension O(1)
Previously, we'd be O(number-of-suspensions) and do some extra
book keeping work as part of every operation.

This commit reorganizes things so that the looking is now O(1)
via a hash table for the queue name (the original code was
a copy-pasta adaptation from the scheduled queue code that
could match based on multiple critiera, and couldn't use a hash lookup).

The expiration logic is made "probabalistic" (really, once every N
operations), and the caller can now hold a "reference" to the
suspension result to avoid locking to check to see if it is
still current.

I'm mostly happy with this, except that for egress source selection
it is not easy to cache without introducing an additional point
of contention to coordinate on maintaining the cache.
2024-05-07 12:07:28 -07:00
Wez Furlong fb86faaa9a dns-resolver: paranoid lock scoping
I'm seeing some lock contention around the MX_CACHE and out of paranoia
that this might be another one of those rust-is-extending the lock
scope issues, move them into little helper functions just to be sure.
2024-05-07 09:43:17 -07:00
Wez Furlong 6b98eb1f4b kcli: add a default timeout to internal http requests 2024-05-07 08:46:25 -07:00
Wez Furlong 8cdadb036c ready_queue: fixup connection goal calculation
I noticed this recently during some testing; for large queue sizes
and large connection limits, we could end up opening more connections
than we currently have queued messages to deliver.

The issue was that the `.min()` constraint was placed on the wrong
term of the calculation, clamping prior to scaling, instead of
after scaling.
2024-05-07 07:24:46 -07:00
Wez Furlong 85f497582c ready_queue: fixup low memory handling
I forgot to port this over to the cross beam version of
the queue while working on 1e09627a5c
and just noticed that it was commented out!
2024-05-07 06:54:54 -07:00
Wez Furlong 1cdd6bbc91 deps: update libunbound to 1.19.3 2024-05-07 06:22:19 -07:00
Wez Furlong f7a5679d73 cargo update 2024-05-07 05:54:51 -07:00
Wez Furlong 39dc6c73a7 kcli top: increase min width
Makes the titles look less cluttered when the terminal is large
2024-05-06 20:14:49 -07:00
Wez Furlong bef8baebc2 kcli top: improve layout, add metrics
Add permfail and thread pool utilization metrics.
Make the vertical layout work a bit better.
2024-05-06 20:06:34 -07:00
Wez Furlong 245828a328 expose tokio runtime metrics to prometheus
These metrics are described in the corresponding crate
documentation:

https://github.com/hanaasagi/tokio-metrics-collector?tab=readme-ov-file#runtime-metrics

The main tokio runtime and pools are mostly used for spawn_blocking
calls when spooling.
2024-05-06 07:21:17 -07:00
Wez Furlong 69aa8b9b7c rustfmt 2024-05-04 15:55:54 -07:00
Wez Furlong b8a0b26936 NEW: kcli top
This will shows some TUI sparkline charts of major system metrics
over time.
2024-05-04 13:13:09 -07:00
Wez Furlong a1fae3a634 rocksdb: improve write/delete throughput
This adjusts how we do write and delete operations so that we
first try to immediately submit the operation to the WAL,
but if that would block, then we push the operation to
the tokio blocking thread pool in order not to hard-block
the tokio schedule thread when rocksdb needs to perform writes.

While in there, hook up the force-sync flag to the closest
approximation in the WriteOptions for the batch (of size 1).
2024-05-03 20:03:49 -07:00
Wez Furlong 89d98cd3ad expand thread pool/runtime concept some more
As much as I'd love for tokio to be magic and figure everything
out, it doesn't and cannot do that.

In any complex system it is important to be able to control
and provision the various stages so that a certain QoS is met.

This commit expands the use of the various thread pools, and
adjusts them from always spawning num-cpus to a more balanced
set of sizes, so that not everything is competing with everything.

These sizes are configurable via env vars, but a preferably
configured during the `init` event via a handful of new lua
functions that must be called very early on.

More docs on these will appear in a later commit.

The default pool sizes are a function of the number of cores,
and are intended to balance receiving and sending functions
such that a throughput test should run without any significant
build up of the scheduled queue.

This commit also exposes the sizes of the thread pools and the
number of parked (idle) threads via prometheus.
2024-05-03 18:10:32 -07:00
Wez Furlong 157b38ce9e switch Mutex to parking_log FairMutex 2024-05-03 15:55:34 -07:00
Wez Furlong f572f60f5a rfc5321 client: remove unused variable 2024-05-03 14:30:55 -07:00