fix: propagate callback cancellation (#1400)

This commit is contained in:
Giuliano Mega 2026-02-05 11:33:23 -03:00 committed by GitHub
parent 3203dfba41
commit 1a7cf2d335
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 5 additions and 4 deletions

View File

@ -100,12 +100,13 @@ proc runBlockCheck(
trace "Cycle completed"
proc start*(self: BlockMaintainer) =
proc onTimer(): Future[void] {.async: (raises: []).} =
proc onTimer(): Future[void] {.async: (raises: [CancelledError]).} =
try:
await self.runBlockCheck()
except CancelledError as err:
trace "Running block check in block maintenance timer callback cancelled: ",
err = err.msg
raise err
self.timer.start(onTimer, self.interval)

View File

@ -17,7 +17,7 @@ import pkg/chronos
import ../logutils
type
TimerCallback* = proc(): Future[void] {.async: (raises: []).}
TimerCallback* = proc(): Future[void] {.async: (raises: [CancelledError]).}
Timer* = ref object of RootObj
callback: TimerCallback
interval: Duration

View File

@ -21,11 +21,11 @@ asyncchecksuite "Timer":
var numbersState = 0
var lettersState = 'a'
proc numbersCallback(): Future[void] {.async: (raises: []).} =
proc numbersCallback(): Future[void] {.async: (raises: [CancelledError]).} =
output &= $numbersState
inc numbersState
proc lettersCallback(): Future[void] {.async: (raises: []).} =
proc lettersCallback(): Future[void] {.async: (raises: [CancelledError]).} =
output &= $lettersState
inc lettersState