Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
2.5 kB ยท 70 lines
TypeScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071import { getLogger } from "@logtape/logtape";import { type UptimeFreezePipes, runUptimeFreeze,} from "@openstatus/services/frozen-uptime";import { OSTinybird } from "@openstatus/tinybird";import type { Context } from "hono";
import { env } from "../env";import { reportBackgroundError, runSentryCron } from "../lib/sentry";
const logger = getLogger(["workflow", "uptime-freeze"]);
const tb = new OSTinybird(env().TINY_BIRD_API_KEY);
const pipes: UptimeFreezePipes = { http: tb.httpStatus45d, tcp: tb.tcpStatus45d, dns: tb.dnsStatus45d,};
export async function handleUptimeFreezeCron(c: Context) { const { cronCompleted, cronFailed } = runSentryCron("uptime-freeze");
// Background chain: must not capture `c` or anything derived from it โ // the handler returns 200 before this resolves (see external-status.ts) void runUptimeFreeze({ pipes, onChunkFailure: ({ jobType, error }) => { logger.warn("uptime-freeze: tinybird {jobType} chunk failed: {reason}", { jobType, reason: error instanceof Error ? error.message : String(error), }); }, }) .then(async (res) => { if (res.failures.length > 0) { // isolate: a Sentry transport failure must not flip a completed // freeze run into cronFailed via the outer catch try { await reportBackgroundError( `uptime-freeze ${res.month}: ${res.failures.length} failures (frozen=${res.frozen}, alreadyFrozen=${res.alreadyFrozen}, skipped=${res.skipped}). First: ${res.failures.slice(0, 5).join("; ")}`, ); } catch (reportError) { logger.warn("uptime-freeze: reportBackgroundError failed: {reason}", { reason: reportError instanceof Error ? reportError.message : String(reportError), }); } } logger.info( "uptime-freeze complete: month={month} frozen={frozen} alreadyFrozen={alreadyFrozen} skipped={skipped} failed={failed}", { ...res, failed: res.failures.length }, ); void cronCompleted(); }) .catch((e) => { logger.error("uptime-freeze errored: {message}", { message: e instanceof Error ? e.message : String(e), }); void reportBackgroundError( `uptime-freeze failed: ${e instanceof Error ? e.message : String(e)}`, ); void cronFailed(); });
return c.json({ success: true }, 200);}