diff --git a/CHANGELOG.md b/CHANGELOG.md index 41eb697..8a3a797 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.6.1 + +### Bug Fixes + +- Fix SwiftkubeClientTask cancelling + ## 0.6.0 ### New diff --git a/Sources/SwiftkubeClient/Watch/SwiftkubeClientTask.swift b/Sources/SwiftkubeClient/Watch/SwiftkubeClientTask.swift index 59efe55..27ab2bb 100644 --- a/Sources/SwiftkubeClient/Watch/SwiftkubeClientTask.swift +++ b/Sources/SwiftkubeClient/Watch/SwiftkubeClientTask.swift @@ -46,7 +46,7 @@ public class SwiftkubeClientTask: SwiftkubeClientTaskDelegate { let promise: EventLoopPromise let retriesSequence: RetryStrategy.Iterator let logger: Logger - + var cancelled: Bool = false var clientTask: HTTPClient.Task? init( @@ -102,8 +102,13 @@ public class SwiftkubeClientTask: SwiftkubeClientTaskDelegate { } private func reconnect() { + guard !cancelled else { + logger.debug("Task was cancelled for request: \(request)") + return + } + logger.debug("Reconnecting task for request: \(request)") - cancelCurrentTask() + stopCurrentTask() guard let nextAttempt = retriesSequence.next() else { logger.info("Max retries reached for request: \(request)") @@ -114,7 +119,7 @@ public class SwiftkubeClientTask: SwiftkubeClientTaskDelegate { schedule(in: TimeAmount.milliseconds(Int64(delayMillis))) } - private func cancelCurrentTask() { + private func stopCurrentTask() { clientTask?.cancel() clientTask = nil } @@ -131,7 +136,8 @@ public class SwiftkubeClientTask: SwiftkubeClientTaskDelegate { /// Cancels the task execution. public func cancel() { - cancelCurrentTask() + cancelled = true + stopCurrentTask() promise.succeed(()) } }