diff --git a/apps/api/src/routes/pings.ts b/apps/api/src/routes/pings.ts index 193a44f..e64c847 100644 --- a/apps/api/src/routes/pings.ts +++ b/apps/api/src/routes/pings.ts @@ -97,8 +97,8 @@ export const ingest = new Elysia() monitor_id: t.String(), scheduled_at: t.Optional(t.Nullable(t.String())), jitter_ms: t.Optional(t.Nullable(t.Number())), - status_code: t.Optional(t.Number()), - latency_ms: t.Optional(t.Number()), + status_code: t.Optional(t.Nullable(t.Number())), + latency_ms: t.Optional(t.Nullable(t.Number())), up: t.Boolean(), error: t.Optional(t.Nullable(t.String())), cert_expiry_days: t.Optional(t.Nullable(t.Number())), diff --git a/apps/monitor/src/runner.rs b/apps/monitor/src/runner.rs index a5dcf8a..79b1da1 100644 --- a/apps/monitor/src/runner.rs +++ b/apps/monitor/src/runner.rs @@ -342,7 +342,7 @@ async fn post_result( token: &str, result: PingResult, ) -> Result<()> { - tokio::time::timeout( + let resp = tokio::time::timeout( std::time::Duration::from_secs(10), client .post(format!("{coordinator_url}/internal/ingest")) @@ -352,5 +352,11 @@ async fn post_result( ).await .map_err(|_| anyhow::anyhow!("post_result timed out"))? .map_err(|e| anyhow::anyhow!("{e}"))?; + + if !resp.status().is_success() { + let status = resp.status(); + let body = resp.text().await.unwrap_or_default(); + return Err(anyhow::anyhow!("ingest returned {status}: {body}")); + } Ok(()) }