diff --git a/hive-c0re/Cargo.toml b/hive-c0re/Cargo.toml index 54e97769..4e4159bc 100644 --- a/hive-c0re/Cargo.toml +++ b/hive-c0re/Cargo.toml @@ -20,12 +20,19 @@ 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). Same versions/features as hive-metric — the -# blocking OTLP client is deliberate: the metrics SDK's PeriodicReader runs -# on a background thread with no Tokio reactor, where the async client panics. +# (stats/otel_metrics.rs). Same versions as hive-metric, and the same blocking +# OTLP client for the same reason: the metrics SDK's PeriodicReader runs on a +# background thread with no Tokio reactor, where the async client panics. +# Features differ by one — see `internal-logs` below and hive-metric's note. opentelemetry = "0.32" opentelemetry_sdk = { version = "0.32", features = ["metrics"] } opentelemetry-otlp = { version = "0.32", default-features = false, features = [ + # Not a transport — this is the exporter's own diagnostics, and it is in + # `default`, so `default-features = false` drops it unless it is named here. + # Without it every `otel_warn!`/`otel_debug!` *inside this crate* compiles to + # nothing, and the one failure that returns HTTP 200 — the collector accepting + # the request and rejecting the data points — is reported nowhere at all. + "internal-logs", "metrics", "http-json", "reqwest-blocking-client", diff --git a/hive-metric/Cargo.toml b/hive-metric/Cargo.toml index 741d3419..fda8c027 100644 --- a/hive-metric/Cargo.toml +++ b/hive-metric/Cargo.toml @@ -19,6 +19,13 @@ opentelemetry_sdk = { version = "0.32", features = ["metrics"] } # so the async client panics there with "no reactor running". The blocking # client sends on that thread directly — and for a fire-and-forget CLI that # records one point then `shutdown()`s, a synchronous send is exactly right. +# +# Deliberately WITHOUT the `internal-logs` feature that `hive-c0re` names, even +# though the defect is identical: this binary installs no `tracing` subscriber, +# so the SDK's diagnostics would be emitted into a void. Enabling it here would +# read as "hive-metric reports its export failures" while changing nothing at +# all. Giving this CLI somewhere to report is a behaviour change with its own +# decision (does a metrics push print to stderr?) — tracked separately. opentelemetry-otlp = { version = "0.32", default-features = false, features = [ "metrics", "http-json",