git.iko.soy/parseable-macos
on master help sign in
Suppress spurious 'Network error: cancelled' when switching datasets (#44)
cc502cfiko
ParseableViewer/Services/ParseableClient.swift+2
@@ -51,6 +51,8 @@ enum ParseableError: LocalizedError {
51 return "Connection timed out. The server may be unreachable."
51 return "Connection timed out. The server may be unreachable."
52 case NSURLErrorSecureConnectionFailed, NSURLErrorServerCertificateUntrusted:
52 case NSURLErrorSecureConnectionFailed, NSURLErrorServerCertificateUntrusted:
53 return "SSL/TLS error. The server certificate may be invalid or untrusted."
53 return "SSL/TLS error. The server certificate may be invalid or untrusted."
54+ case NSURLErrorCancelled:
55+ return "Request cancelled"
54 default:
56 default:
55 return "Network error: \(error.localizedDescription)"
57 return "Network error: \(error.localizedDescription)"
56 }
58 }
ParseableViewer/ViewModels/LiveTailViewModel.swift+1
@@ -342,6 +342,7 @@ final class LiveTailViewModel {
342 errorMessage = nil
342 errorMessage = nil
343 consecutiveErrors = 0
343 consecutiveErrors = 0
344 } catch {
344 } catch {
345+ guard !Task.isCancelled else { return }
345 consecutiveErrors += 1
346 consecutiveErrors += 1
346 if consecutiveErrors >= Self.maxConsecutiveErrors {
347 if consecutiveErrors >= Self.maxConsecutiveErrors {
347 errorMessage = "\(ParseableError.userFriendlyMessage(for: error)) — stopped after \(consecutiveErrors) consecutive failures"
348 errorMessage = "\(ParseableError.userFriendlyMessage(for: error)) — stopped after \(consecutiveErrors) consecutive failures"
ParseableViewer/ViewModels/QueryViewModel.swift+3−3
@@ -341,10 +341,10 @@ final class QueryViewModel {
341 let entry = QueryHistoryEntry(sql: sql, resultCount: resultCount, duration: queryDuration ?? 0)
341 let entry = QueryHistoryEntry(sql: sql, resultCount: resultCount, duration: queryDuration ?? 0)
342 addToHistory(entry)
342 addToHistory(entry)
343 } catch is CancellationError {
343 } catch is CancellationError {
344− errorMessage = "Query cancelled"
344+ // Silently ignore — cancelQuery() or a new executeQuery() handles state
345− results = []
345+ return
346− columns = []
347 } catch {
346 } catch {
347+ guard !Task.isCancelled else { return }
348 errorMessage = ParseableError.userFriendlyMessage(for: error)
348 errorMessage = ParseableError.userFriendlyMessage(for: error)
349 if let serverError = error as? ParseableError,
349 if let serverError = error as? ParseableError,
350 case .serverError(_, let msg) = serverError,
350 case .serverError(_, let msg) = serverError,