6b27e67b04
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com>
60 lines
2.5 KiB
Go
60 lines
2.5 KiB
Go
package orchestrator
|
|
|
|
import "expvar"
|
|
|
|
// expvar maps published at package init under /debug/vars (dev profile, see
|
|
// apps/backend/AGENTS.md Observability), mirroring the office scheduler's
|
|
// routing_* counters (internal/office/scheduler/metrics_vars.go). Each
|
|
// observed commit increments "observed" plus exactly one of
|
|
// inserted/duplicate/failed, broken down by which write path saw it -
|
|
// commitCaptureTriggerLive (handleGitCommitCreated), ...Sweep (the
|
|
// agent-completed reconcile pass), or ...Archive (archive capture,
|
|
// unchanged as the final reconciliation pass). A trigger that stops
|
|
// incrementing while the others keep moving is the writer-health signal:
|
|
// one path silently stopped without the whole feature going dark.
|
|
var (
|
|
commitCaptureObserved = expvar.NewMap("commit_capture_observed")
|
|
commitCaptureInserted = expvar.NewMap("commit_capture_inserted")
|
|
commitCaptureDuplicate = expvar.NewMap("commit_capture_duplicate")
|
|
commitCaptureFailed = expvar.NewMap("commit_capture_failed")
|
|
|
|
// commitCaptureFetchFailed counts GetGitLog-level failures - either a
|
|
// total result-level failure (Success == false) or an individual
|
|
// per-repo failure inside a multi-repo response's PerRepoErrors - broken
|
|
// down by trigger. These happen before any commit is even observed, so
|
|
// they are accounted separately from commitCaptureFailed (a known
|
|
// commit's DB-write failure, paired with commitCaptureObserved via the
|
|
// observed = inserted + duplicate + failed identity); folding fetch
|
|
// failures into that counter would break the identity.
|
|
commitCaptureFetchFailed = expvar.NewMap("commit_capture_fetch_failed")
|
|
)
|
|
|
|
// commitCaptureTrigger identifies which write path observed a commit.
|
|
type commitCaptureTrigger string
|
|
|
|
const (
|
|
commitCaptureTriggerLive commitCaptureTrigger = "live"
|
|
commitCaptureTriggerSweep commitCaptureTrigger = "sweep"
|
|
commitCaptureTriggerArchive commitCaptureTrigger = "archive"
|
|
)
|
|
|
|
func recordCommitCaptureObserved(trigger commitCaptureTrigger) {
|
|
commitCaptureObserved.Add(string(trigger), 1)
|
|
}
|
|
|
|
func recordCommitCaptureInserted(trigger commitCaptureTrigger) {
|
|
commitCaptureInserted.Add(string(trigger), 1)
|
|
}
|
|
|
|
func recordCommitCaptureDuplicate(trigger commitCaptureTrigger) {
|
|
commitCaptureDuplicate.Add(string(trigger), 1)
|
|
}
|
|
|
|
func recordCommitCaptureFailed(trigger commitCaptureTrigger) {
|
|
commitCaptureFailed.Add(string(trigger), 1)
|
|
}
|
|
|
|
func recordCommitCaptureFetchFailed(trigger commitCaptureTrigger) {
|
|
commitCaptureFetchFailed.Add(string(trigger), 1)
|
|
}
|