Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/hive-c0re/Cargo.toml
atlas 2b0154be28 hive-c0re: bound forge API calls so a stalled forge can't wedge the swarm event loop
forgejo-api 0.11.1 takes no caller-built client, so a request to a forge that
accepts the connection and never answers waited forever. Every forge::api()
call site now goes through forge::bounded, a 10s timeout that errors naming the
operation. The PR-comment calls run inline in swarm_status::drain_swarm_events,
the one task serving both swarm subscriptions, so a stalled forge stopped both.

Refs #5066
2026-10-09 17:06:00 +02:00

69 lines
2.4 KiB
TOML

[package]
name = "hive-c0re"
edition.workspace = true
version.workspace = true
readme = "README.md"
[lints]
workspace = true
[dependencies]
# For `StreamExt::next` on the swarm-event subscription in `swarm_status`.
# Workspace-level, same version swarm-controller already uses — not a second copy.
futures-util.workspace = true
anyhow.workspace = true
# Named directly only for the client type the swarm status publisher passes
# around; the connect itself lives in `swarm-queue-client` below.
async-nats.workspace = true
axum.workspace = true
chrono.workspace = true
base64.workspace = true
bcrypt.workspace = true
reqwest.workspace = true
forgejo-api.workspace = true
url.workspace = true
clap.workspace = true
clap_complete.workspace = true
clap-markdown = "0.1"
# OTEL SDK for the per-agent container-resource metrics exporter
# (stats/otel_metrics.rs). "internal-logs" on top of the workspace base is
# this crate's own opt-in: it's not a transport, it's in `default`, and
# `default-features = false` upstream drops it unless named here.
opentelemetry.workspace = true
opentelemetry_sdk.workspace = true
opentelemetry-otlp = { workspace = true, features = ["internal-logs"] }
indicatif.workspace = true
hive-core-agent-sock.workspace = true
hive-sh4re.workspace = true
hive-host-sock.workspace = true
hive-jobq.workspace = true
hive-jobq-wire.workspace = true
hive-log.workspace = true
hive-priv-sock.workspace = true
hive-types.workspace = true
libc.workspace = true
listenfd = "1"
petgraph.workspace = true
hmac.workspace = true
sha2.workspace = true
rusqlite.workspace = true
serde.workspace = true
serde_json.workspace = true
strum.workspace = true
# Offering this hive's status to the swarm (`swarm_status`). The same crate
# the swarm controller reads it with, and `kv` for the same reason: the
# bucket's name and creation config belong to neither end of it alone.
swarm-queue-client = { workspace = true, features = ["kv", "notices"] }
swarm-secret-client.workspace = true
tokio.workspace = true
tokio-stream.workspace = true
tracing.workspace = true
problem_details = { version = "0.9.0", features = ["axum"] }
utoipa.workspace = true
utoipa-axum.workspace = true
# `test-util` for `#[tokio::test(start_paused = true)]`: `forge::bounded`'s
# test asserts the deadline fires without waiting it out.
[dev-dependencies]
tempfile = "3"
tokio = { workspace = true, features = ["test-util"] }