Skip to content

Commit

Permalink
chore: better approch for busy waiting and async task
Browse files Browse the repository at this point in the history
  • Loading branch information
darshankabariya committed Dec 9, 2024
1 parent f888557 commit f844b5f
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions waku/waku_rln_relay/rln_relay.nim
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ type WakuRLNRelay* = ref object of RootObj
groupManager*: GroupManager
onFatalErrorAction*: OnFatalErrorHandler
nonceManager*: NonceManager
epochMonitorFuture*: Future[void]

proc calcEpoch*(rlnPeer: WakuRLNRelay, t: float64): Epoch =
## gets time `t` as `flaot64` with subseconds resolution in the fractional part
Expand Down Expand Up @@ -392,22 +393,29 @@ proc generateRlnValidator*(

return validator

proc monitorEpochs(wakuRlnRelay: WakuRLNRelay) {.async.} =
proc monitorEpochs(wakuRlnRelay: WakuRLNRelay): Future[void] {.async.} =
var nextEpochTime = epochTime()
var lastEpoch = wakuRlnRelay.calcEpoch(epochTime())
var firstChangeDetected = false

while true:
try:
let currentEpoch = wakuRlnRelay.calcEpoch(epochTime())

if currentEpoch != lastEpoch:
nextEpochTime = epochTime() + wakuRlnRelay.rlnEpochSizeSec
waku_rln_proof_remining.set(
wakuRlnRelay.groupManager.userMessageLimit.get().float64
)
lastEpoch = currentEpoch
firstChangeDetected = true

await sleepAsync(500)
except CatchableError as e:
error "Error in epoch monitoring", err = e.msg
if firstChangeDetected:
await sleepAsync(nextEpochTime - epochTime())
else:
await sleepAsync(1000) # 1 second
except CatchableError:
error "Error in epoch monitoring", error = getCurrentExceptionMsg()

proc mount(
conf: WakuRlnConfig, registrationHandler = none(RegistrationHandler)
Expand Down Expand Up @@ -472,7 +480,7 @@ proc mount(
)

# Start epoch monitoring in the background
asyncSpawn monitorEpochs(wakuRlnRelay)
wakuRlnRelay.epochMonitorFuture = monitorEpochs(wakuRlnRelay)

return ok(wakuRlnRelay)

Expand Down

0 comments on commit f844b5f

Please sign in to comment.