Skip to content

Commit

Permalink
Fix SwiftkubeClientTask cancelling
Browse files Browse the repository at this point in the history
  • Loading branch information
iabudiab committed Feb 11, 2021
1 parent 311e8ce commit fb078c2
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 0.6.1

### Bug Fixes

- Fix SwiftkubeClientTask cancelling

## 0.6.0

### New
Expand Down
14 changes: 10 additions & 4 deletions Sources/SwiftkubeClient/Watch/SwiftkubeClientTask.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public class SwiftkubeClientTask: SwiftkubeClientTaskDelegate {
let promise: EventLoopPromise<Void>
let retriesSequence: RetryStrategy.Iterator
let logger: Logger

var cancelled: Bool = false
var clientTask: HTTPClient.Task<Void>?

init(
Expand Down Expand Up @@ -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)")
Expand All @@ -114,7 +119,7 @@ public class SwiftkubeClientTask: SwiftkubeClientTaskDelegate {
schedule(in: TimeAmount.milliseconds(Int64(delayMillis)))
}

private func cancelCurrentTask() {
private func stopCurrentTask() {
clientTask?.cancel()
clientTask = nil
}
Expand All @@ -131,7 +136,8 @@ public class SwiftkubeClientTask: SwiftkubeClientTaskDelegate {

/// Cancels the task execution.
public func cancel() {
cancelCurrentTask()
cancelled = true
stopCurrentTask()
promise.succeed(())
}
}

0 comments on commit fb078c2

Please sign in to comment.