feat(jobs): expose last job failure time
JobActivity 记录最近失败时刻并进入快照;JobRunner 失败时上报该时刻;新增指标 msgx.pipeline.job.last_failure_age_seconds 与健康明细 lastFailureAgeSeconds(对齐 reference 作业健康口径)。 验证:./gradlew test 145 tests / 0 fail / 0 skipped。
This commit is contained in:
+6
-2
@@ -59,12 +59,16 @@ class JobRunnerHealthIndicatorTest {
|
||||
fun `a failed tick counts up without refreshing the heartbeat`() {
|
||||
val activity = JobActivity().apply { started() }
|
||||
|
||||
activity.tickFailed()
|
||||
activity.tickFailed()
|
||||
activity.tickFailed(now.minusSeconds(5))
|
||||
activity.tickFailed(now)
|
||||
|
||||
val snapshot = activity.snapshot()
|
||||
assertEquals(2L, snapshot.failures)
|
||||
assertEquals(0L, snapshot.ticks)
|
||||
assertEquals(null, snapshot.lastTickAt)
|
||||
|
||||
val details = details(jobRunnerHealth(snapshot, now))
|
||||
assertEquals(0L, details["lastFailureAgeSeconds"])
|
||||
assertEquals(2L, details["failures"])
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,6 +69,7 @@ class JobRunnerTest {
|
||||
|
||||
val snapshot = activity.snapshot()
|
||||
assertNull(snapshot.lastTickAt)
|
||||
assertEquals(MutableClock.BASE, snapshot.lastFailureAt)
|
||||
assertEquals(0L, snapshot.ticks)
|
||||
assertEquals(1L, snapshot.failures)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user