Skip to content

Commit 218eb07

Browse files
authored
Fix up existential any errors (#240)
1 parent 92940e3 commit 218eb07

18 files changed

+80
-73
lines changed

Sources/Valkey/Cluster/ValkeyClusterClient.swift

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public final class ValkeyClusterClient: Sendable {
9797
public init(
9898
clientConfiguration: ValkeyClientConfiguration,
9999
nodeDiscovery: some ValkeyNodeDiscovery,
100-
eventLoopGroup: EventLoopGroup = MultiThreadedEventLoopGroup.singleton,
100+
eventLoopGroup: any EventLoopGroup = MultiThreadedEventLoopGroup.singleton,
101101
logger: Logger,
102102
channelFactory: (@Sendable (ValkeyServerAddress, any EventLoop) async throws -> any Channel)? = nil
103103
) {
@@ -207,8 +207,8 @@ public final class ValkeyClusterClient: Sendable {
207207
@inlinable
208208
public func execute<each Command: ValkeyCommand>(
209209
_ commands: repeat each Command
210-
) async -> sending (repeat Result<(each Command).Response, Error>) {
211-
func convert<Response: RESPTokenDecodable>(_ result: Result<RESPToken, Error>, to: Response.Type) -> Result<Response, Error> {
210+
) async -> sending (repeat Result<(each Command).Response, any Error>) {
211+
func convert<Response: RESPTokenDecodable>(_ result: Result<RESPToken, any Error>, to: Response.Type) -> Result<Response, any Error> {
212212
result.flatMap {
213213
do {
214214
return try .success(Response(fromRESP: $0))
@@ -228,10 +228,10 @@ public final class ValkeyClusterClient: Sendable {
228228
@usableFromInline
229229
let indices: [[any ValkeyCommand].Index]
230230
@usableFromInline
231-
let results: [Result<RESPToken, Error>]
231+
let results: [Result<RESPToken, any Error>]
232232

233233
@inlinable
234-
init(indices: [[any ValkeyCommand].Index], results: [Result<RESPToken, Error>]) {
234+
init(indices: [[any ValkeyCommand].Index], results: [Result<RESPToken, any Error>]) {
235235
self.indices = indices
236236
self.results = results
237237
}
@@ -259,7 +259,7 @@ public final class ValkeyClusterClient: Sendable {
259259
@inlinable
260260
public func execute(
261261
_ commands: [any ValkeyCommand]
262-
) async -> sending [Result<RESPToken, Error>] {
262+
) async -> sending [Result<RESPToken, any Error>] {
263263
guard commands.count > 0 else { return [] }
264264
// get a list of nodes and the commands that should be run on them
265265
do {
@@ -285,7 +285,10 @@ public final class ValkeyClusterClient: Sendable {
285285
}
286286
}
287287
}
288-
var results = [Result<RESPToken, Error>](repeating: .failure(ValkeyClusterError.pipelinedResultNotReturned), count: commands.count)
288+
var results = [Result<RESPToken, any Error>](
289+
repeating: .failure(ValkeyClusterError.pipelinedResultNotReturned),
290+
count: commands.count
291+
)
289292
// get results for each node
290293
while let taskResult = await group.next() {
291294
precondition(taskResult.indices.count == taskResult.results.count)
@@ -318,7 +321,7 @@ public final class ValkeyClusterClient: Sendable {
318321
func execute<Commands: Collection & Sendable>(
319322
node: ValkeyNodeClient,
320323
commands: Commands
321-
) async throws -> sending [Result<RESPToken, Error>] where Commands.Element == any ValkeyCommand, Commands.Index == Int {
324+
) async throws -> sending [Result<RESPToken, any Error>] where Commands.Element == any ValkeyCommand, Commands.Index == Int {
322325
// execute pipeline
323326
var results = await node.execute(commands)
324327
var retryCommands: [(any ValkeyCommand, Int)] = []

Sources/Valkey/Connection/ValkeyChannelHandler+stateMachine.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ extension ValkeyChannelHandler {
1818
case connected(ConnectedState)
1919
case active(ActiveState)
2020
case closing(ActiveState)
21-
case closed(Error?)
21+
case closed((any Error)?)
2222

2323
@usableFromInline
2424
var description: String {
@@ -92,7 +92,7 @@ extension ValkeyChannelHandler {
9292
@usableFromInline
9393
enum SendCommandAction {
9494
case sendCommand(Context)
95-
case throwError(Error)
95+
case throwError(any Error)
9696
}
9797

9898
/// handler wants to send a command
@@ -132,8 +132,8 @@ extension ValkeyChannelHandler {
132132
@usableFromInline
133133
enum ReceivedResponseAction {
134134
case respond(PendingCommand, DeadlineCallbackAction)
135-
case respondAndClose(PendingCommand, Error?)
136-
case closeWithError(Error)
135+
case respondAndClose(PendingCommand, (any Error)?)
136+
case closeWithError(any Error)
137137
}
138138

139139
/// handler wants to send a command
@@ -203,7 +203,7 @@ extension ValkeyChannelHandler {
203203
@usableFromInline
204204
enum WaitOnActiveAction {
205205
case waitForPromise(EventLoopPromise<RESPToken>)
206-
case reportedClosed(Error?)
206+
case reportedClosed((any Error)?)
207207
case done
208208
}
209209

@@ -439,7 +439,7 @@ extension ValkeyChannelHandler {
439439
StateMachine(.closing(state))
440440
}
441441

442-
private static func closed(_ error: Error?) -> Self {
442+
private static func closed(_ error: (any Error)?) -> Self {
443443
StateMachine(.closed(error))
444444
}
445445
}

Sources/Valkey/Connection/ValkeyChannelHandler.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ enum ValkeyPromise<T: Sendable>: Sendable {
2727
}
2828
}
2929

30-
func fail(_ e: Error) {
30+
func fail(_ e: any Error) {
3131
switch self {
3232
case .nio(let eventLoopPromise):
3333
eventLoopPromise.fail(e)
@@ -99,7 +99,7 @@ final class ValkeyChannelHandler: ChannelInboundHandler {
9999

100100
static let simpleOk = RESPToken(validated: ByteBuffer(string: "+OK\r\n"))
101101
@usableFromInline
102-
/*private*/ let eventLoop: EventLoop
102+
/*private*/ let eventLoop: any EventLoop
103103
@usableFromInline
104104
/*private*/ var encoder = ValkeyCommandEncoder()
105105
@usableFromInline
@@ -116,7 +116,7 @@ final class ValkeyChannelHandler: ChannelInboundHandler {
116116
/* private*/ let configuration: Configuration
117117

118118
/// Initialize a ValkeyChannelHandler
119-
init(configuration: Configuration, eventLoop: EventLoop, logger: Logger) {
119+
init(configuration: Configuration, eventLoop: any EventLoop, logger: Logger) {
120120
self.configuration = configuration
121121
self.eventLoop = eventLoop
122122
self.subscriptions = .init(logger: logger)
@@ -448,7 +448,7 @@ final class ValkeyChannelHandler: ChannelInboundHandler {
448448
}
449449
}
450450

451-
func handleError(context: ChannelHandlerContext, error: Error) {
451+
func handleError(context: ChannelHandlerContext, error: any Error) {
452452
self.logger.debug("ValkeyCommandHandler: ERROR", metadata: ["error": "\(error)"])
453453
switch self.stateMachine.close() {
454454
case .failPendingCommandsAndClose(let context, let commands):

Sources/Valkey/Connection/ValkeyConnection+ConnectionPool.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ final class ValkeyClientMetrics: ConnectionPoolObservabilityDelegate {
7878

7979
/// A connection attempt failed with the given error. After some period of
8080
/// time ``startedConnecting(id:)`` may be called again.
81-
func connectFailed(id: ConnectionID, error: Error) {
81+
func connectFailed(id: ConnectionID, error: any Error) {
8282
self.logger.debug(
8383
"Connection creation failed",
8484
metadata: [
@@ -128,7 +128,7 @@ final class ValkeyClientMetrics: ConnectionPoolObservabilityDelegate {
128128

129129
func keepAliveSucceeded(id: ConnectionID) {}
130130

131-
func keepAliveFailed(id: ValkeyConnection.ID, error: Error) {}
131+
func keepAliveFailed(id: ValkeyConnection.ID, error: any Error) {}
132132

133133
/// The remote peer is quiescing the connection: no new streams will be created on it. The
134134
/// connection will eventually be closed and removed from the pool.
@@ -143,7 +143,7 @@ final class ValkeyClientMetrics: ConnectionPoolObservabilityDelegate {
143143

144144
/// The connection was closed. The connection may be established again in the future (notified
145145
/// via ``startedConnecting(id:)``).
146-
func connectionClosed(id: ConnectionID, error: Error?) {
146+
func connectionClosed(id: ConnectionID, error: (any Error)?) {
147147
self.logger.debug(
148148
"Connection closed",
149149
metadata: [

Sources/Valkey/Connection/ValkeyConnection+transactions.swift

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import NIOCore
1313
extension ValkeyConnection {
1414

1515
@inlinable
16-
public func transaction<C0: ValkeyCommand>(_ c0: C0) async throws -> (Result<C0.Response, Error>) {
16+
public func transaction<C0: ValkeyCommand>(_ c0: C0) async throws -> (Result<C0.Response, any Error>) {
1717
guard let responses = try await self.execute(MULTI(), ValkeyRawResponseCommand(c0), EXEC()).2.get() else {
1818
throw ValkeyClientError(.transactionAborted)
1919
}
@@ -24,7 +24,7 @@ extension ValkeyConnection {
2424
public func transaction<C0: ValkeyCommand, C1: ValkeyCommand>(
2525
_ c0: C0,
2626
_ c1: C1
27-
) async throws -> (Result<C0.Response, Error>, Result<C1.Response, Error>) {
27+
) async throws -> (Result<C0.Response, any Error>, Result<C1.Response, any Error>) {
2828
guard let responses = try await self.execute(MULTI(), ValkeyRawResponseCommand(c0), ValkeyRawResponseCommand(c1), EXEC()).3.get() else {
2929
throw ValkeyClientError(.transactionAborted)
3030
}
@@ -36,7 +36,7 @@ extension ValkeyConnection {
3636
_ c0: C0,
3737
_ c1: C1,
3838
_ c2: C2
39-
) async throws -> (Result<C0.Response, Error>, Result<C1.Response, Error>, Result<C2.Response, Error>) {
39+
) async throws -> (Result<C0.Response, any Error>, Result<C1.Response, any Error>, Result<C2.Response, any Error>) {
4040
guard
4141
let responses = try await self.execute(
4242
MULTI(),
@@ -55,7 +55,8 @@ extension ValkeyConnection {
5555
_ c1: C1,
5656
_ c2: C2,
5757
_ c3: C3
58-
) async throws -> (Result<C0.Response, Error>, Result<C1.Response, Error>, Result<C2.Response, Error>, Result<C3.Response, Error>) {
58+
) async throws -> (Result<C0.Response, any Error>, Result<C1.Response, any Error>, Result<C2.Response, any Error>, Result<C3.Response, any Error>)
59+
{
5960
guard
6061
let responses = try await self.execute(
6162
MULTI(),
@@ -77,7 +78,8 @@ extension ValkeyConnection {
7778
_ c3: C3,
7879
_ c4: C4
7980
) async throws -> (
80-
Result<C0.Response, Error>, Result<C1.Response, Error>, Result<C2.Response, Error>, Result<C3.Response, Error>, Result<C4.Response, Error>
81+
Result<C0.Response, any Error>, Result<C1.Response, any Error>, Result<C2.Response, any Error>, Result<C3.Response, any Error>,
82+
Result<C4.Response, any Error>
8183
) {
8284
guard
8385
let responses = try await self.execute(
@@ -102,8 +104,8 @@ extension ValkeyConnection {
102104
_ c4: C4,
103105
_ c5: C5
104106
) async throws -> (
105-
Result<C0.Response, Error>, Result<C1.Response, Error>, Result<C2.Response, Error>, Result<C3.Response, Error>, Result<C4.Response, Error>,
106-
Result<C5.Response, Error>
107+
Result<C0.Response, any Error>, Result<C1.Response, any Error>, Result<C2.Response, any Error>, Result<C3.Response, any Error>,
108+
Result<C4.Response, any Error>, Result<C5.Response, any Error>
107109
) {
108110
guard
109111
let responses = try await self.execute(
@@ -138,8 +140,8 @@ extension ValkeyConnection {
138140
_ c5: C5,
139141
_ c6: C6
140142
) async throws -> (
141-
Result<C0.Response, Error>, Result<C1.Response, Error>, Result<C2.Response, Error>, Result<C3.Response, Error>, Result<C4.Response, Error>,
142-
Result<C5.Response, Error>, Result<C6.Response, Error>
143+
Result<C0.Response, any Error>, Result<C1.Response, any Error>, Result<C2.Response, any Error>, Result<C3.Response, any Error>,
144+
Result<C4.Response, any Error>, Result<C5.Response, any Error>, Result<C6.Response, any Error>
143145
) {
144146
guard
145147
let responses = try await self.execute(
@@ -177,8 +179,8 @@ extension ValkeyConnection {
177179
_ c6: C6,
178180
_ c7: C7
179181
) async throws -> (
180-
Result<C0.Response, Error>, Result<C1.Response, Error>, Result<C2.Response, Error>, Result<C3.Response, Error>, Result<C4.Response, Error>,
181-
Result<C5.Response, Error>, Result<C6.Response, Error>, Result<C7.Response, Error>
182+
Result<C0.Response, any Error>, Result<C1.Response, any Error>, Result<C2.Response, any Error>, Result<C3.Response, any Error>,
183+
Result<C4.Response, any Error>, Result<C5.Response, any Error>, Result<C6.Response, any Error>, Result<C7.Response, any Error>
182184
) {
183185
guard
184186
let responses = try await self.execute(
@@ -219,8 +221,9 @@ extension ValkeyConnection {
219221
_ c7: C7,
220222
_ c8: C8
221223
) async throws -> (
222-
Result<C0.Response, Error>, Result<C1.Response, Error>, Result<C2.Response, Error>, Result<C3.Response, Error>, Result<C4.Response, Error>,
223-
Result<C5.Response, Error>, Result<C6.Response, Error>, Result<C7.Response, Error>, Result<C8.Response, Error>
224+
Result<C0.Response, any Error>, Result<C1.Response, any Error>, Result<C2.Response, any Error>, Result<C3.Response, any Error>,
225+
Result<C4.Response, any Error>, Result<C5.Response, any Error>, Result<C6.Response, any Error>, Result<C7.Response, any Error>,
226+
Result<C8.Response, any Error>
224227
) {
225228
guard
226229
let responses = try await self.execute(
@@ -264,8 +267,9 @@ extension ValkeyConnection {
264267
_ c8: C8,
265268
_ c9: C9
266269
) async throws -> (
267-
Result<C0.Response, Error>, Result<C1.Response, Error>, Result<C2.Response, Error>, Result<C3.Response, Error>, Result<C4.Response, Error>,
268-
Result<C5.Response, Error>, Result<C6.Response, Error>, Result<C7.Response, Error>, Result<C8.Response, Error>, Result<C9.Response, Error>
270+
Result<C0.Response, any Error>, Result<C1.Response, any Error>, Result<C2.Response, any Error>, Result<C3.Response, any Error>,
271+
Result<C4.Response, any Error>, Result<C5.Response, any Error>, Result<C6.Response, any Error>, Result<C7.Response, any Error>,
272+
Result<C8.Response, any Error>, Result<C9.Response, any Error>
269273
) {
270274
guard
271275
let responses = try await self.execute(

Sources/Valkey/Connection/ValkeyConnection.swift

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
9393
public static func withConnection<Value>(
9494
address: ValkeyServerAddress,
9595
configuration: ValkeyConnectionConfiguration = .init(),
96-
eventLoop: EventLoop = MultiThreadedEventLoopGroup.singleton.any(),
96+
eventLoop: any EventLoop = MultiThreadedEventLoopGroup.singleton.any(),
9797
logger: Logger,
9898
isolation: isolated (any Actor)? = #isolation,
9999
operation: (ValkeyConnection) async throws -> sending Value
@@ -124,7 +124,7 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
124124
address: ValkeyServerAddress,
125125
connectionID: ID,
126126
configuration: ValkeyConnectionConfiguration,
127-
eventLoop: EventLoop = MultiThreadedEventLoopGroup.singleton.any(),
127+
eventLoop: any EventLoop = MultiThreadedEventLoopGroup.singleton.any(),
128128
logger: Logger
129129
) async throws -> ValkeyConnection {
130130
let future =
@@ -224,8 +224,8 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
224224
@inlinable
225225
public func execute<each Command: ValkeyCommand>(
226226
_ commands: repeat each Command
227-
) async -> sending (repeat Result<(each Command).Response, Error>) {
228-
func convert<Response: RESPTokenDecodable>(_ result: Result<RESPToken, Error>, to: Response.Type) -> Result<Response, Error> {
227+
) async -> sending (repeat Result<(each Command).Response, any Error>) {
228+
func convert<Response: RESPTokenDecodable>(_ result: Result<RESPToken, any Error>, to: Response.Type) -> Result<Response, any Error> {
229229
result.flatMap {
230230
do {
231231
return try .success(Response(fromRESP: $0))
@@ -276,7 +276,7 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
276276
@inlinable
277277
public func execute(
278278
_ commands: some Collection<any ValkeyCommand>
279-
) async -> sending [Result<RESPToken, Error>] {
279+
) async -> sending [Result<RESPToken, any Error>] {
280280
let requestID = Self.requestIDGenerator.next()
281281
// this currently allocates a promise for every command. We could collapse this down to one promise
282282
var mpromises: [EventLoopPromise<RESPToken>] = []
@@ -298,7 +298,7 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
298298
self.channelHandler.write(request: ValkeyRequest.multiple(buffer: outBuffer, promises: promises.map { .nio($0) }, id: requestID))
299299
}
300300
// get response from channel handler
301-
var results: [Result<RESPToken, Error>] = .init()
301+
var results: [Result<RESPToken, any Error>] = .init()
302302
results.reserveCapacity(commands.count)
303303
for promise in promises {
304304
await results.append(promise.futureResult._result())
@@ -322,7 +322,7 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
322322
@usableFromInline
323323
func executeWithAsk(
324324
_ commands: some Collection<any ValkeyCommand>
325-
) async -> sending [Result<RESPToken, Error>] {
325+
) async -> sending [Result<RESPToken, any Error>] {
326326
let requestID = Self.requestIDGenerator.next()
327327
// this currently allocates a promise for every command. We could collapse this down to one promise
328328
var mpromises: [EventLoopPromise<RESPToken>] = []
@@ -347,7 +347,7 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
347347
)
348348
}
349349
// get response from channel handler
350-
var results: [Result<RESPToken, Error>] = .init()
350+
var results: [Result<RESPToken, any Error>] = .init()
351351
results.reserveCapacity(commands.count)
352352
for promise in promises {
353353
await results.append(promise.futureResult._result())
@@ -383,13 +383,13 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
383383
private static func _makeConnection(
384384
address: ValkeyServerAddress,
385385
connectionID: ID,
386-
eventLoop: EventLoop,
386+
eventLoop: any EventLoop,
387387
configuration: ValkeyConnectionConfiguration,
388388
logger: Logger
389389
) -> EventLoopFuture<ValkeyConnection> {
390390
eventLoop.assertInEventLoop()
391391

392-
let bootstrap: NIOClientTCPBootstrapProtocol
392+
let bootstrap: any NIOClientTCPBootstrapProtocol
393393
#if canImport(Network)
394394
if let tsBootstrap = createTSBootstrap(eventLoopGroup: eventLoop, tlsOptions: nil) {
395395
bootstrap = tsBootstrap
@@ -414,7 +414,7 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
414414
}
415415
}
416416

417-
let future: EventLoopFuture<Channel>
417+
let future: EventLoopFuture<any Channel>
418418
switch address.value {
419419
case .hostname(let host, let port):
420420
future = connect.connect(host: host, port: port)
@@ -512,13 +512,13 @@ public final actor ValkeyConnection: ValkeyClientProtocol, Sendable {
512512
}
513513

514514
/// create a BSD sockets based bootstrap
515-
private static func createSocketsBootstrap(eventLoopGroup: EventLoopGroup) -> ClientBootstrap {
515+
private static func createSocketsBootstrap(eventLoopGroup: any EventLoopGroup) -> ClientBootstrap {
516516
ClientBootstrap(group: eventLoopGroup)
517517
}
518518

519519
#if canImport(Network)
520520
/// create a NIOTransportServices bootstrap using Network.framework
521-
private static func createTSBootstrap(eventLoopGroup: EventLoopGroup, tlsOptions: NWProtocolTLS.Options?) -> NIOTSConnectionBootstrap? {
521+
private static func createTSBootstrap(eventLoopGroup: any EventLoopGroup, tlsOptions: NWProtocolTLS.Options?) -> NIOTSConnectionBootstrap? {
522522
guard
523523
let bootstrap = NIOTSConnectionBootstrap(validatingGroup: eventLoopGroup)
524524
else {

Sources/Valkey/Connection/ValkeyConnectionFactory.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ package final class ValkeyConnectionFactory: Sendable {
1616

1717
enum Mode: Sendable {
1818
case `default`
19-
case custom(@Sendable (ValkeyServerAddress, any EventLoop) async throws -> Channel)
19+
case custom(@Sendable (ValkeyServerAddress, any EventLoop) async throws -> any Channel)
2020
}
2121

2222
let mode: Mode

0 commit comments

Comments
 (0)