Skip to content

kumo.compute_egress_path_config_constraints

local constraints =
  kumo.compute_egress_path_config_constraints(path_config, additional)
Since: Dev Builds Only

The functionality described in this section requires a dev build of KumoMTA. You can obtain a dev build by following the instructions in the Installation section.

Given an egress path configuration table (as returned by kumo.invoke_get_egress_path_config or constructed via kumo.make_egress_path), returns the steady-state throughput ceilings implied by that configuration.

The optional additional argument accepts another constraints table whose ceilings are merged in via per-axis minimum. This is useful when merging in kumo.compute_queue_config_constraints.

The returned value has the following shape:

local example = {
  max_concurrent_dispatchers = {
    value = 32,
    source = { kind = 'primary' },
    display = '32',
  },
  max_message_rate = {
    value = 100,
    source = { kind = 'reconnect_cycling' },
    display = '10 × 10/s = 100/s',
  },
  max_message_rate_declared = '1000/s',
  max_connection_rate = {
    value = 10,
    source = { kind = 'primary' },
    display = '10/s',
  },
  max_source_selection_rate = nil,
}

Each axis carries an EffectiveCeiling with:

  • value: canonical numeric value (events per second for rate axes, count for concurrency).
  • source: tagged enum identifying which configuration term produced the ceiling. kind is one of "primary", "additional" (with a name field naming the entry in the corresponding additional_* map), "reconnect_cycling", or "other" (with a name field naming a constraint contributed from a configuration layer outside the egress path config).
  • display: human-readable string preserving the operator's original configuration units.

max_message_rate_declared is set only when max_message_rate is explicitly configured but a different term (typically the reconnect_cycling ceiling of max_deliveries_per_connection × max_connection_rate) wins the minimum. It records the declared rate so renderers can surface a "declared but unreachable" annotation.

See also kumo.format_egress_path_config_constraints for a human-readable rendering of the constraints, and kcli inspect-ready-q which displays the same diagnostic for a live ready queue.