adds validation groups and group index in logs of validator

This commit is contained in:
Marcin Czenko 2024-10-14 01:49:39 +02:00
parent 82886b2b5b
commit 1c9228350a
No known key found for this signature in database
GPG Key ID: 33DEA0C8E30937C0
1 changed files with 31 additions and 13 deletions

View File

@ -47,7 +47,8 @@ proc getCurrentPeriod(validation: Validation): UInt256 =
proc waitUntilNextPeriod(validation: Validation) {.async.} =
let period = validation.getCurrentPeriod()
let periodEnd = validation.periodicity.periodEnd(period)
trace "Waiting until next period", currentPeriod = period
trace "Waiting until next period", currentPeriod = period, groups = validation.config.groups,
groupIndex = validation.config.groupIndex
await validation.clock.waitUntil(periodEnd.truncate(int64) + 1)
func groupIndexForSlotId*(slotId: SlotId,
@ -71,7 +72,8 @@ proc subscribeSlotFilled(validation: Validation) {.async.} =
proc onSlotFilled(requestId: RequestId, slotIndex: UInt256) =
let slotId = slotId(requestId, slotIndex)
if validation.shouldValidateSlot(slotId):
trace "Adding slot", slotId
trace "Adding slot", slotId, groups = validation.config.groups,
groupIndex = validation.config.groupIndex
validation.slots.incl(slotId)
let subscription = await validation.market.subscribeSlotFilled(onSlotFilled)
validation.subscriptions.add(subscription)
@ -82,7 +84,8 @@ proc removeSlotsThatHaveEnded(validation: Validation) {.async.} =
for slotId in slots:
let state = await validation.market.slotState(slotId)
if state != SlotState.Filled:
trace "Removing slot", slotId
trace "Removing slot", slotId, groups = validation.config.groups,
groupIndex = validation.config.groupIndex
ended.incl(slotId)
validation.slots.excl(ended)
@ -94,11 +97,15 @@ proc markProofAsMissing(validation: Validation,
try:
if await validation.market.canProofBeMarkedAsMissing(slotId, period):
trace "Marking proof as missing", slotId, periodProofMissed = period
trace "Marking proof as missing", slotId, periodProofMissed = period,
groups = validation.config.groups,
groupIndex = validation.config.groupIndex
await validation.market.markProofAsMissing(slotId, period)
else:
let inDowntime {.used.} = await validation.market.inDowntime(slotId)
trace "Proof not missing", checkedPeriod = period, inDowntime
trace "Proof not missing", checkedPeriod = period, inDowntime,
groups = validation.config.groups,
groupIndex = validation.config.groupIndex
except CancelledError:
raise
except CatchableError as e:
@ -111,36 +118,47 @@ proc markProofsAsMissing(validation: Validation) {.async.} =
await validation.markProofAsMissing(slotId, previousPeriod)
proc run(validation: Validation) {.async.} =
trace "Validation started"
trace "Validation started", groups = validation.config.groups,
groupIndex = validation.config.groupIndex
try:
while true:
await validation.waitUntilNextPeriod()
await validation.removeSlotsThatHaveEnded()
await validation.markProofsAsMissing()
except CancelledError:
trace "Validation stopped"
trace "Validation stopped", groups = validation.config.groups,
groupIndex = validation.config.groupIndex
discard
except CatchableError as e:
error "Validation failed", msg = e.msg
error "Validation failed", msg = e.msg, groups = validation.config.groups,
groupIndex = validation.config.groupIndex
proc epochForDurationBackFromNow(validation: Validation,
duration: times.Duration): SecondsSince1970 =
return validation.clock.now - duration.inSeconds
proc restoreHistoricalState(validation: Validation) {.async} =
trace "Restoring historical state..."
trace "Restoring historical state...", groups = validation.config.groups,
groupIndex = validation.config.groupIndex
let startTimeEpoch = validation.epochForDurationBackFromNow(MaxStorageRequestDuration)
let slotFilledEvents = await validation.market.queryPastSlotFilledEvents(
fromTime = startTimeEpoch)
trace "Found slot filled events", numberOfSlots = slotFilledEvents.len
trace "Found slot filled events", numberOfSlots = slotFilledEvents.len,
groups = validation.config.groups,
groupIndex = validation.config.groupIndex
for event in slotFilledEvents:
let slotId = slotId(event.requestId, event.slotIndex)
if validation.shouldValidateSlot(slotId):
trace "Adding slot [historical]", slotId
trace "Adding slot [historical]", slotId,
groups = validation.config.groups,
groupIndex = validation.config.groupIndex
validation.slots.incl(slotId)
trace "Removing slots that have ended..."
trace "Removing slots that have ended...", groups = validation.config.groups,
groupIndex = validation.config.groupIndex
await removeSlotsThatHaveEnded(validation)
trace "Historical state restored", numberOfSlots = validation.slots.len
trace "Historical state restored", numberOfSlots = validation.slots.len,
groups = validation.config.groups,
groupIndex = validation.config.groupIndex
proc start*(validation: Validation) {.async.} =
validation.periodicity = await validation.market.periodicity()