tick_queue_arm called list_active_queue_consumers() and then iterated serially, awaiting one queue.claim(app, queue) per consumer. With N consumers and a 100ms tick the worst-case throughput was N × (claim + executor) / tick — one slow handler blocked every other queue's progress on the dispatcher's task. Replace the for-loop with `futures::stream::iter(consumers) .for_each_concurrent(QUEUE_DISPATCH_PARALLELISM, …)`. The execution gate already caps real script-concurrency to its permits, so this just removes the dispatcher-side serialization. QUEUE_DISPATCH_PARALLELISM = 32 (matches the default gate). Workspace gains `futures = 0.3` so `for_each_concurrent` is available. AUDIT.md anchor: F-P-007. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
45 lines
1.0 KiB
TOML
45 lines
1.0 KiB
TOML
[package]
|
|
name = "picloud-manager-core"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
picloud-shared.workspace = true
|
|
picloud-executor-core.workspace = true
|
|
picloud-orchestrator-core.workspace = true
|
|
|
|
async-trait.workspace = true
|
|
futures.workspace = true
|
|
axum.workspace = true
|
|
rand.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
thiserror.workspace = true
|
|
tokio.workspace = true
|
|
tracing.workspace = true
|
|
uuid.workspace = true
|
|
chrono.workspace = true
|
|
chrono-tz.workspace = true
|
|
cron.workspace = true
|
|
sqlx.workspace = true
|
|
url.workspace = true
|
|
reqwest.workspace = true
|
|
|
|
argon2.workspace = true
|
|
sha2.workspace = true
|
|
# HMAC-SHA256 verification of inbound-email provider signatures (v1.1.7).
|
|
hmac.workspace = true
|
|
hex.workspace = true
|
|
base64.workspace = true
|
|
data-encoding.workspace = true
|
|
# Outbound SMTP email (v1.1.7 email::send / send_html).
|
|
lettre.workspace = true
|
|
|
|
[dev-dependencies]
|
|
tokio.workspace = true
|