fix: clear pending pings to avoid promise leaks on connection close/suspend
- Add cancel() method to RttCommand to fail promise on connection close - Add dequeueAll() method to ConcurrentQueue for batch cleanup - Call clearPendingPings() in close(), suspend(), and disconnect() methods - Prevents 'leaking promise' crash when connection is closed while pings are pending
This commit is contained in:
@@ -36,4 +36,9 @@ internal class RttCommand {
|
||||
func getRoundTripTime() async throws -> TimeInterval {
|
||||
try await promise?.futureResult.get() ?? 0
|
||||
}
|
||||
|
||||
/// Cancel the ping request to avoid promise leaks when connection is closed
|
||||
func cancel() {
|
||||
promise?.fail(NatsError.ClientError.connectionClosed)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user