From 86a6ef9215b573a9bc1ee6153ded823dec64bf30 Mon Sep 17 00:00:00 2001 From: Eric <5089238+emizzle@users.noreply.github.com> Date: Wed, 6 Dec 2023 03:20:14 +0000 Subject: [PATCH] remove waitFor cancelAndWait in proving state (#643) In proving.onCancelled, the `waitFor state.loop.cancelAndWait()` was never completing. Turns out this was not needed, because when changing states, the current state's run is cancelled, which automatically cancels the state prove loop, because it is a child of proving.run. Therefore, the logic to cancelAndWait the prove loop was removed as it was not needed. --- codex/sales.nim | 2 +- codex/sales/states/proving.nim | 22 ++++------------------ 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/codex/sales.nim b/codex/sales.nim index b57718a2..b68f9ccc 100644 --- a/codex/sales.nim +++ b/codex/sales.nim @@ -373,7 +373,7 @@ proc subscribeCancellation(sales: Sales) {.async.} = let queue = context.slotQueue proc onCancelled(requestId: RequestId) = - trace "request cancelled, removing all request slots from queue" + trace "request cancelled (via contract RequestCancelled event), removing all request slots from queue" queue.delete(requestId) try: diff --git a/codex/sales/states/proving.nim b/codex/sales/states/proving.nim index 22cd50b4..e4059f6d 100644 --- a/codex/sales/states/proving.nim +++ b/codex/sales/states/proving.nim @@ -79,27 +79,13 @@ proc proveLoop( method `$`*(state: SaleProving): string = "SaleProving" method onCancelled*(state: SaleProving, request: StorageRequest): ?State = - if not state.loop.isNil: - if not state.loop.finished: - try: - waitFor state.loop.cancelAndWait() - except CatchableError as e: - error "Error during cancelation of prooving loop", msg = e.msg - - state.loop = nil - + # state.loop cancellation happens automatically when run is cancelled due to + # state change return some State(SaleCancelled()) method onFailed*(state: SaleProving, request: StorageRequest): ?State = - if not state.loop.isNil: - if not state.loop.finished: - try: - waitFor state.loop.cancelAndWait() - except CatchableError as e: - error "Error during cancelation of prooving loop", msg = e.msg - - state.loop = nil - + # state.loop cancellation happens automatically when run is cancelled due to + # state change return some State(SaleFailed()) method run*(state: SaleProving, machine: Machine): Future[?State] {.async.} =