Files
kumomta/crates
Wez Furlong d5decd1361 bounce/suspend schedq: improve data structures
While doing a torture test with a very large combination of
the number of domains, campaigns and tenants (effectively
unbounded in any meaningful time period), using the smart sink
to generate bounces and suspensions, I found that the overhead
of tracking the set of bounces and suspensions by scheduled
queue was too high: each bounce lookup was O(number-of-bounces),
and when you can have 100k admin bounces configured, that is
not good for the miss case, which, despite the volume of admin
bounce records, is still the dominant case.

This commit introduces a helper map/multi-index type that
maintains indices for the common tuples:

* (domain, campaign, tenant),
* (domain, tenant)
* (domain)
* other

then uses an appropriate index based on the current context.

That reduces the the lookup cost to effectively constant time (3 x O(1)
lookups), unless there are admin bounces registered in the "other"
bucket, in which case there is an additional O(number-of-other) lookups.
2025-03-18 14:05:53 -07:00
..
2024-12-07 09:17:54 -07:00
2024-12-07 09:17:54 -07:00
2024-12-07 09:17:54 -07:00
2024-12-07 09:17:54 -07:00
2024-12-07 09:17:54 -07:00
2024-12-07 09:17:54 -07:00
2024-12-07 09:17:54 -07:00
2024-12-07 09:17:54 -07:00
2024-12-07 09:17:54 -07:00
2024-11-13 13:50:27 -07:00
2025-03-12 11:07:52 -07:00