Fetching global last
This commit is contained in:
parent
768a162ac0
commit
10ffc77e7c
@ -62,6 +62,10 @@ class CoordinatorHealthService(
|
|||||||
val eventsLastMinute = eventService.getEventsLast(1)
|
val eventsLastMinute = eventService.getEventsLast(1)
|
||||||
val eventsLastFive = eventService.getEventsLast(5)
|
val eventsLastFive = eventService.getEventsLast(5)
|
||||||
|
|
||||||
|
val last = listOfNotNull(
|
||||||
|
tasks.maxOfOrNull { it.persistedAt },
|
||||||
|
eventService.getLastEventTimestamp()
|
||||||
|
)
|
||||||
|
|
||||||
return CoordinatorHealth(
|
return CoordinatorHealth(
|
||||||
status = status,
|
status = status,
|
||||||
@ -69,7 +73,7 @@ class CoordinatorHealthService(
|
|||||||
stalledTasks = stalledTaskIds.size,
|
stalledTasks = stalledTaskIds.size,
|
||||||
activeTasks = tasks.count { !it.consumed },
|
activeTasks = tasks.count { !it.consumed },
|
||||||
queuedTasks = TaskStore.getPendingTasks().size,
|
queuedTasks = TaskStore.getPendingTasks().size,
|
||||||
lastActivity = tasks.maxOfOrNull { it.persistedAt },
|
lastActivity = last.max(),
|
||||||
|
|
||||||
abandonedTaskIds = abandonedTaskIds.map { it.toString() },
|
abandonedTaskIds = abandonedTaskIds.map { it.toString() },
|
||||||
stalledTaskIds = stalledTaskIds.map { it.toString() },
|
stalledTaskIds = stalledTaskIds.map { it.toString() },
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import no.iktdev.mediaprocessing.shared.common.dto.toDto
|
|||||||
import no.iktdev.mediaprocessing.shared.common.effectivePersisted
|
import no.iktdev.mediaprocessing.shared.common.effectivePersisted
|
||||||
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
import java.time.Instant
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -68,6 +69,7 @@ class EventService {
|
|||||||
return EventStore.eventsLast(minutes)
|
return EventStore.eventsLast(minutes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getLastEventTimestamp(): Instant? = EventStore.getLastEventTimestamp()
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -17,6 +17,7 @@ import no.iktdev.mediaprocessing.shared.database.likeAny
|
|||||||
import no.iktdev.mediaprocessing.shared.database.queries.pagedQuery
|
import no.iktdev.mediaprocessing.shared.database.queries.pagedQuery
|
||||||
import no.iktdev.mediaprocessing.shared.database.tables.EventsTable
|
import no.iktdev.mediaprocessing.shared.database.tables.EventsTable
|
||||||
import no.iktdev.mediaprocessing.shared.database.withTransaction
|
import no.iktdev.mediaprocessing.shared.database.withTransaction
|
||||||
|
import org.jetbrains.exposed.sql.SortOrder
|
||||||
import org.jetbrains.exposed.sql.insert
|
import org.jetbrains.exposed.sql.insert
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
import java.time.temporal.ChronoUnit
|
import java.time.temporal.ChronoUnit
|
||||||
@ -152,4 +153,13 @@ object EventStore: EventStore {
|
|||||||
}.getOrDefault(emptyList())
|
}.getOrDefault(emptyList())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getLastEventTimestamp(): Instant? {
|
||||||
|
return withTransaction {
|
||||||
|
EventsTable.select(EventsTable.persistedAt)
|
||||||
|
.orderBy(EventsTable.persistedAt, SortOrder.DESC)
|
||||||
|
.limit(1)
|
||||||
|
.firstOrNull()
|
||||||
|
?.get(EventsTable.persistedAt)
|
||||||
|
}.getOrDefault(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user