Build Information
Successful build of redi-s, reference 0.6.0 (4ec4de
), with Swift 6.1 for Linux on 28 Apr 2025 08:03:59 UTC.
Swift 6 data race errors: 18
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
Build Log
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
79 | }
80 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:84:23: warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
82 | ctx.handler.subscribedChannels?.remove(key)
83 | let count = ctx.handler.subscribedChannels?.count ?? 0
84 | ctx.write([ subscribeCmd,
| `- warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
85 | RESPValue(bulkString: key),
86 | RESPValue.integer(count) ].toRESPValue())
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:76:12: warning: reference to captured var 'subscribedChannels' in concurrently-executing code; this is an error in the Swift 6 language mode
74 | pubsub.Q.async {
75 | for key in channelKeys {
76 | if subscribedChannels.contains(key) {
| `- warning: reference to captured var 'subscribedChannels' in concurrently-executing code; this is an error in the Swift 6 language mode
77 | subscribedChannels.remove(key)
78 | pubsub.unsubscribe(key, handler: ctx.handler)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:77:11: warning: mutation of captured var 'subscribedChannels' in concurrently-executing code; this is an error in the Swift 6 language mode
75 | for key in channelKeys {
76 | if subscribedChannels.contains(key) {
77 | subscribedChannels.remove(key)
| `- warning: mutation of captured var 'subscribedChannels' in concurrently-executing code; this is an error in the Swift 6 language mode
78 | pubsub.unsubscribe(key, handler: ctx.handler)
79 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:82:11: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
80 |
81 | ctx.eventLoop.execute {
82 | ctx.handler.subscribedChannels?.remove(key)
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
83 | let count = ctx.handler.subscribedChannels?.count ?? 0
84 | ctx.write([ subscribeCmd,
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:84:23: warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure
82 | ctx.handler.subscribedChannels?.remove(key)
83 | let count = ctx.handler.subscribedChannels?.count ?? 0
84 | ctx.write([ subscribeCmd,
| `- warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure
85 | RESPValue(bulkString: key),
86 | RESPValue.integer(count) ].toRESPValue())
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:110:11: warning: capture of 'pubsub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
108 | if !subscribedPatterns.contains(key) {
109 | subscribedPatterns.insert(key)
110 | pubsub.subscribe(key, handler: ctx.handler)
| `- warning: capture of 'pubsub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
111 | }
112 |
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:20:7: note: class 'PubSub' does not conform to the 'Sendable' protocol
18 | import enum NIORedis.RESPValue
19 |
20 | class PubSub {
| `- note: class 'PubSub' does not conform to the 'Sendable' protocol
21 |
22 | typealias SubscriberList = ContiguousArray<RedisCommandHandler>
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:110:42: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
108 | if !subscribedPatterns.contains(key) {
109 | subscribedPatterns.insert(key)
110 | pubsub.subscribe(key, handler: ctx.handler)
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
111 | }
112 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:119:23: warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
117 | ctx.handler.subscribedPatterns!.insert(key)
118 | let count = ctx.handler.subscribedPatterns!.count
119 | ctx.write([ subscribeCmd,
| `- warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
120 | RESPValue.bulkString(bb),
121 | RESPValue.integer(count) ].toRESPValue())
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:108:13: warning: reference to captured var 'subscribedPatterns' in concurrently-executing code; this is an error in the Swift 6 language mode
106 | pubsub.Q.async {
107 | for ( bb, key ) in patterns {
108 | if !subscribedPatterns.contains(key) {
| `- warning: reference to captured var 'subscribedPatterns' in concurrently-executing code; this is an error in the Swift 6 language mode
109 | subscribedPatterns.insert(key)
110 | pubsub.subscribe(key, handler: ctx.handler)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:109:11: warning: mutation of captured var 'subscribedPatterns' in concurrently-executing code; this is an error in the Swift 6 language mode
107 | for ( bb, key ) in patterns {
108 | if !subscribedPatterns.contains(key) {
109 | subscribedPatterns.insert(key)
| `- warning: mutation of captured var 'subscribedPatterns' in concurrently-executing code; this is an error in the Swift 6 language mode
110 | pubsub.subscribe(key, handler: ctx.handler)
111 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:114:14: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
112 |
113 | ctx.eventLoop.execute {
114 | if ctx.handler.subscribedPatterns == nil {
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
115 | ctx.handler.subscribedPatterns = Set()
116 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:119:23: warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure
117 | ctx.handler.subscribedPatterns!.insert(key)
118 | let count = ctx.handler.subscribedPatterns!.count
119 | ctx.write([ subscribeCmd,
| `- warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure
120 | RESPValue.bulkString(bb),
121 | RESPValue.integer(count) ].toRESPValue())
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:145:11: warning: capture of 'pubsub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
143 | if subscribedPatterns.contains(key) {
144 | subscribedPatterns.remove(key)
145 | pubsub.unsubscribe(key, handler: ctx.handler)
| `- warning: capture of 'pubsub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
146 | }
147 |
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:20:7: note: class 'PubSub' does not conform to the 'Sendable' protocol
18 | import enum NIORedis.RESPValue
19 |
20 | class PubSub {
| `- note: class 'PubSub' does not conform to the 'Sendable' protocol
21 |
22 | typealias SubscriberList = ContiguousArray<RedisCommandHandler>
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:145:44: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
143 | if subscribedPatterns.contains(key) {
144 | subscribedPatterns.remove(key)
145 | pubsub.unsubscribe(key, handler: ctx.handler)
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
146 | }
147 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:151:23: warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
149 | ctx.handler.subscribedPatterns?.remove(key)
150 | let count = ctx.handler.subscribedPatterns?.count ?? 0
151 | ctx.write([ subscribeCmd,
| `- warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
152 | RESPValue.bulkString(bb),
153 | RESPValue.integer(count) ].toRESPValue())
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:143:12: warning: reference to captured var 'subscribedPatterns' in concurrently-executing code; this is an error in the Swift 6 language mode
141 | pubsub.Q.async {
142 | for ( bb, key ) in patterns {
143 | if subscribedPatterns.contains(key) {
| `- warning: reference to captured var 'subscribedPatterns' in concurrently-executing code; this is an error in the Swift 6 language mode
144 | subscribedPatterns.remove(key)
145 | pubsub.unsubscribe(key, handler: ctx.handler)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:144:11: warning: mutation of captured var 'subscribedPatterns' in concurrently-executing code; this is an error in the Swift 6 language mode
142 | for ( bb, key ) in patterns {
143 | if subscribedPatterns.contains(key) {
144 | subscribedPatterns.remove(key)
| `- warning: mutation of captured var 'subscribedPatterns' in concurrently-executing code; this is an error in the Swift 6 language mode
145 | pubsub.unsubscribe(key, handler: ctx.handler)
146 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:149:11: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
147 |
148 | ctx.eventLoop.execute {
149 | ctx.handler.subscribedPatterns?.remove(key)
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
150 | let count = ctx.handler.subscribedPatterns?.count ?? 0
151 | ctx.write([ subscribeCmd,
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:151:23: warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure
149 | ctx.handler.subscribedPatterns?.remove(key)
150 | let count = ctx.handler.subscribedPatterns?.count ?? 0
151 | ctx.write([ subscribeCmd,
| `- warning: capture of 'subscribeCmd' with non-sendable type 'RESPValue' in a '@Sendable' closure
152 | RESPValue.bulkString(bb),
153 | RESPValue.integer(count) ].toRESPValue())
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:202:11: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
200 | let pubSub = ctx.handler.server.pubSub
201 | pubSub.Q.async {
202 | ctx.write(pubSub.patternToEventLoopToSubscribers.count)
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
203 | }
204 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:202:21: warning: capture of 'pubSub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
200 | let pubSub = ctx.handler.server.pubSub
201 | pubSub.Q.async {
202 | ctx.write(pubSub.patternToEventLoopToSubscribers.count)
| `- warning: capture of 'pubSub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
203 | }
204 |
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:20:7: note: class 'PubSub' does not conform to the 'Sendable' protocol
18 | import enum NIORedis.RESPValue
19 |
20 | class PubSub {
| `- note: class 'PubSub' does not conform to the 'Sendable' protocol
21 |
22 | typealias SubscriberList = ContiguousArray<RedisCommandHandler>
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:218:30: warning: capture of 'pubSub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
216 |
217 | for channel in channels {
218 | guard let loop2Sub = pubSub.channelToEventLoopToSubscribers[channel],
| `- warning: capture of 'pubSub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
219 | !loop2Sub.isEmpty else {
220 | channelCountPairs.append(RESPValue(bulkString: channel))
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:20:7: note: class 'PubSub' does not conform to the 'Sendable' protocol
18 | import enum NIORedis.RESPValue
19 |
20 | class PubSub {
| `- note: class 'PubSub' does not conform to the 'Sendable' protocol
21 |
22 | typealias SubscriberList = ContiguousArray<RedisCommandHandler>
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:230:7: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
228 | }
229 |
230 | ctx.write(.array(channelCountPairs))
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
231 | }
232 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:241:36: warning: capture of 'pubSub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
239 | var channels = ContiguousArray<RESPValue>()
240 |
241 | for ( channel, loop2Sub ) in pubSub.channelToEventLoopToSubscribers {
| `- warning: capture of 'pubSub' with non-sendable type 'PubSub' in a '@Sendable' closure; this is an error in the Swift 6 language mode
242 | guard !loop2Sub.isEmpty else { continue }
243 | if let pattern = pattern {
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:20:7: note: class 'PubSub' does not conform to the 'Sendable' protocol
18 | import enum NIORedis.RESPValue
19 |
20 | class PubSub {
| `- note: class 'PubSub' does not conform to the 'Sendable' protocol
21 |
22 | typealias SubscriberList = ContiguousArray<RedisCommandHandler>
/host/spi-builder-workspace/Sources/RedisServer/Commands/PubSubCommands.swift:257:7: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
255 | }
256 |
257 | ctx.write(.array(channels))
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
258 | }
259 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
[268/286] Compiling RedisServer Monitor.swift
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:60:29: warning: capture of 'subscribers' with non-sendable type 'PubSub.SubscriberList' (aka 'ContiguousArray<RedisCommandHandler>') in a '@Sendable' closure
58 |
59 | loop.execute {
60 | for subscriber in subscribers {
| `- warning: capture of 'subscribers' with non-sendable type 'PubSub.SubscriberList' (aka 'ContiguousArray<RedisCommandHandler>') in a '@Sendable' closure
61 | subscriber.handleNotification(messagePayload)
62 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:61:43: warning: capture of 'messagePayload' with non-sendable type 'RESPValue' in a '@Sendable' closure
59 | loop.execute {
60 | for subscriber in subscribers {
61 | subscriber.handleNotification(messagePayload)
| `- warning: capture of 'messagePayload' with non-sendable type 'RESPValue' in a '@Sendable' closure
62 | }
63 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:18:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
16 | import struct Foundation.Data
17 | import struct NIO.ByteBuffer
18 | import enum NIORedis.RESPValue
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
19 |
20 | class PubSub {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:9: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:32: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:48: warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
114 | @_specialize(where T == Int)
115 | @_specialize(where T == String)
116 | func write<T: RESPEncodable>(_ value: T, flush: Bool = true) {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
117 | let context = self.context
118 | let handler = self.handler
:
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:9: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:32: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:48: warning: capture of 'value' with non-sendable type 'RESPValue' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'value' with non-sendable type 'RESPValue' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import struct Foundation.Data
18 |
[269/286] Compiling RedisServer PubSub.swift
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:60:29: warning: capture of 'subscribers' with non-sendable type 'PubSub.SubscriberList' (aka 'ContiguousArray<RedisCommandHandler>') in a '@Sendable' closure
58 |
59 | loop.execute {
60 | for subscriber in subscribers {
| `- warning: capture of 'subscribers' with non-sendable type 'PubSub.SubscriberList' (aka 'ContiguousArray<RedisCommandHandler>') in a '@Sendable' closure
61 | subscriber.handleNotification(messagePayload)
62 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:61:43: warning: capture of 'messagePayload' with non-sendable type 'RESPValue' in a '@Sendable' closure
59 | loop.execute {
60 | for subscriber in subscribers {
61 | subscriber.handleNotification(messagePayload)
| `- warning: capture of 'messagePayload' with non-sendable type 'RESPValue' in a '@Sendable' closure
62 | }
63 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:18:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
16 | import struct Foundation.Data
17 | import struct NIO.ByteBuffer
18 | import enum NIORedis.RESPValue
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
19 |
20 | class PubSub {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:9: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:32: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:48: warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
114 | @_specialize(where T == Int)
115 | @_specialize(where T == String)
116 | func write<T: RESPEncodable>(_ value: T, flush: Bool = true) {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
117 | let context = self.context
118 | let handler = self.handler
:
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:9: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:32: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:48: warning: capture of 'value' with non-sendable type 'RESPValue' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'value' with non-sendable type 'RESPValue' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import struct Foundation.Data
18 |
[270/286] Compiling RedisServer RedisCommandContext.swift
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:60:29: warning: capture of 'subscribers' with non-sendable type 'PubSub.SubscriberList' (aka 'ContiguousArray<RedisCommandHandler>') in a '@Sendable' closure
58 |
59 | loop.execute {
60 | for subscriber in subscribers {
| `- warning: capture of 'subscribers' with non-sendable type 'PubSub.SubscriberList' (aka 'ContiguousArray<RedisCommandHandler>') in a '@Sendable' closure
61 | subscriber.handleNotification(messagePayload)
62 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:61:43: warning: capture of 'messagePayload' with non-sendable type 'RESPValue' in a '@Sendable' closure
59 | loop.execute {
60 | for subscriber in subscribers {
61 | subscriber.handleNotification(messagePayload)
| `- warning: capture of 'messagePayload' with non-sendable type 'RESPValue' in a '@Sendable' closure
62 | }
63 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/PubSub.swift:18:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
16 | import struct Foundation.Data
17 | import struct NIO.ByteBuffer
18 | import enum NIORedis.RESPValue
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
19 |
20 | class PubSub {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:9: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:32: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:126:48: warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
114 | @_specialize(where T == Int)
115 | @_specialize(where T == String)
116 | func write<T: RESPEncodable>(_ value: T, flush: Bool = true) {
| `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
117 | let context = self.context
118 | let handler = self.handler
:
124 | else {
125 | eventLoop.execute {
126 | handler.write(context: context, value: value.toRESPValue(),
| `- warning: capture of 'value' with non-sendable type 'T' in a '@Sendable' closure
127 | promise: nil)
128 | if flush { context.channel.flush() }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:9: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:32: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1786:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1784 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1785 | /// `ChannelHandler`.
1786 | public final class ChannelHandlerContext: ChannelInvoker {
| `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1787 | // visible for ChannelPipeline to modify
1788 | fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:143:48: warning: capture of 'value' with non-sendable type 'RESPValue' in a '@Sendable' closure
141 | else {
142 | eventLoop.execute {
143 | handler.write(context: context, value: value, promise: nil)
| `- warning: capture of 'value' with non-sendable type 'RESPValue' in a '@Sendable' closure
144 | if flush { context.channel.flush() }
145 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import struct Foundation.Data
18 |
[271/286] Compiling RedisServer RedisCommand.swift
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:32:23: warning: static property 'write' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
30 |
31 | /// command may result in modifications
32 | public static let write = Flags(rawValue: 1 << 0)
| |- warning: static property 'write' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'write' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 | /// command will never modify keys
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:35:23: warning: static property 'readonly' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
33 |
34 | /// command will never modify keys
35 | public static let readonly = Flags(rawValue: 1 << 1)
| |- warning: static property 'readonly' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readonly' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |
37 | /// reject command if currently OOM
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:38:23: warning: static property 'denyoom' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
36 |
37 | /// reject command if currently OOM
38 | public static let denyoom = Flags(rawValue: 1 << 2)
| |- warning: static property 'denyoom' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'denyoom' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
39 |
40 | /// server admin command
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:41:23: warning: static property 'admin' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
39 |
40 | /// server admin command
41 | public static let admin = Flags(rawValue: 1 << 3)
| |- warning: static property 'admin' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'admin' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// pubsub-related command
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:44:23: warning: static property 'pubsub' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
42 |
43 | /// pubsub-related command
44 | public static let pubsub = Flags(rawValue: 1 << 4)
| |- warning: static property 'pubsub' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'pubsub' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
45 |
46 | /// deny this command from scripts
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:47:23: warning: static property 'noscript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
45 |
46 | /// deny this command from scripts
47 | public static let noscript = Flags(rawValue: 1 << 5)
| |- warning: static property 'noscript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'noscript' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
48 |
49 | /// command has random results, dangerous for scripts
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:50:23: warning: static property 'random' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
48 |
49 | /// command has random results, dangerous for scripts
50 | public static let random = Flags(rawValue: 1 << 6)
| |- warning: static property 'random' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'random' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 |
52 | /// allow command while database is loading
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:53:23: warning: static property 'loading' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
51 |
52 | /// allow command while database is loading
53 | public static let loading = Flags(rawValue: 1 << 7)
| |- warning: static property 'loading' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'loading' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 |
55 | /// allow command while replica has stale data
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:56:23: warning: static property 'stale' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
54 |
55 | /// allow command while replica has stale data
56 | public static let stale = Flags(rawValue: 1 << 8)
| |- warning: static property 'stale' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'stale' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
57 |
58 | public static let fast = Flags(rawValue: 1 << 9)
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:58:23: warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
56 | public static let stale = Flags(rawValue: 1 << 8)
57 |
58 | public static let fast = Flags(rawValue: 1 << 9)
| |- warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'fast' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
59 |
60 | public static let sortForScript = Flags(rawValue: 1 << 10)
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:60:23: warning: static property 'sortForScript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
58 | public static let fast = Flags(rawValue: 1 << 9)
59 |
60 | public static let sortForScript = Flags(rawValue: 1 << 10)
| |- warning: static property 'sortForScript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sortForScript' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 |
62 | public var stringArray : [ String ] {
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:122:18: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
120 | ctx.context.writeAndFlush(NIOAny(RESPValue.ok))
121 | .whenComplete { _ in
122 | ctx.context.channel.close(promise: nil)
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:182:21: warning: capture of 'server' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
180 | server.Q.async {
181 |
182 | let clients = server.clients.values
| `- warning: capture of 'server' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
183 |
184 | // do not block the server
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:26:12: note: class 'RedisServer' does not conform to the 'Sendable' protocol
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:187:39: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
185 | listQueue.async {
186 | var count = clients.count
187 | guard count > 0 else { return ctx.write("") } // Never
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:186:22: warning: capture of 'clients' with non-sendable type 'Dictionary<ObjectIdentifier, RedisCommandHandler>.Values' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 | // do not block the server
185 | listQueue.async {
186 | var count = clients.count
| `- warning: capture of 'clients' with non-sendable type 'Dictionary<ObjectIdentifier, RedisCommandHandler>.Values' in a '@Sendable' closure; this is an error in the Swift 6 language mode
187 | guard count > 0 else { return ctx.write("") } // Never
188 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:187:39: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
185 | listQueue.async {
186 | var count = clients.count
187 | guard count > 0 else { return ctx.write("") } // Never
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:15: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in an isolated local function; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in an isolated local function; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:15: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:192:20: warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
190 | func yield(_ info: RedisCommandHandler.ClientInfo) {
191 | listQueue.async {
192 | assert(count > 0)
| `- warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
193 | count -= 1
194 |
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:193:13: warning: mutation of captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
191 | listQueue.async {
192 | assert(count > 0)
193 | count -= 1
| `- warning: mutation of captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
194 |
195 | result.writeString(info.redisClientLogLine)
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:195:13: warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
193 | count -= 1
194 |
195 | result.writeString(info.redisClientLogLine)
| `- warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
196 | result.writeInteger(10 as UInt8)
197 |
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:196:13: warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
194 |
195 | result.writeString(info.redisClientLogLine)
196 | result.writeInteger(10 as UInt8)
| `- warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:198:16: warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
196 | result.writeInteger(10 as UInt8)
197 |
198 | if count == 0 {
| `- warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
199 | ctx.write(.bulkString(result))
200 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:37: warning: reference to captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: reference to captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:209:15: warning: capture of 'yield' with non-sendable type '(RedisCommandHandler.ClientInfo) -> ()' in a '@Sendable' closure
207 | if let eventLoop = client.eventLoop {
208 | eventLoop.execute {
209 | yield(client.getClientInfo())
| |- warning: capture of 'yield' with non-sendable type '(RedisCommandHandler.ClientInfo) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
210 | }
211 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:209:21: warning: capture of 'client' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
207 | if let eventLoop = client.eventLoop {
208 | eventLoop.execute {
209 | yield(client.getClientInfo())
| `- warning: capture of 'client' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
210 | }
211 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:190:14: warning: concurrently-executed local function 'yield' must be marked as '@Sendable'
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
190 | func yield(_ info: RedisCommandHandler.ClientInfo) {
| `- warning: concurrently-executed local function 'yield' must be marked as '@Sendable'
191 | listQueue.async {
192 | assert(count > 0)
/host/spi-builder-workspace/Sources/RedisServer/Commands/SetCommands.swift:36:9: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
34 |
35 | ctx.eventLoop.execute {
36 | ctx.write(set.toRESPValue())
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
37 | }
38 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
[272/286] Compiling RedisServer ServerCommands.swift
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:32:23: warning: static property 'write' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
30 |
31 | /// command may result in modifications
32 | public static let write = Flags(rawValue: 1 << 0)
| |- warning: static property 'write' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'write' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 | /// command will never modify keys
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:35:23: warning: static property 'readonly' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
33 |
34 | /// command will never modify keys
35 | public static let readonly = Flags(rawValue: 1 << 1)
| |- warning: static property 'readonly' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readonly' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |
37 | /// reject command if currently OOM
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:38:23: warning: static property 'denyoom' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
36 |
37 | /// reject command if currently OOM
38 | public static let denyoom = Flags(rawValue: 1 << 2)
| |- warning: static property 'denyoom' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'denyoom' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
39 |
40 | /// server admin command
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:41:23: warning: static property 'admin' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
39 |
40 | /// server admin command
41 | public static let admin = Flags(rawValue: 1 << 3)
| |- warning: static property 'admin' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'admin' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// pubsub-related command
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:44:23: warning: static property 'pubsub' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
42 |
43 | /// pubsub-related command
44 | public static let pubsub = Flags(rawValue: 1 << 4)
| |- warning: static property 'pubsub' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'pubsub' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
45 |
46 | /// deny this command from scripts
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:47:23: warning: static property 'noscript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
45 |
46 | /// deny this command from scripts
47 | public static let noscript = Flags(rawValue: 1 << 5)
| |- warning: static property 'noscript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'noscript' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
48 |
49 | /// command has random results, dangerous for scripts
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:50:23: warning: static property 'random' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
48 |
49 | /// command has random results, dangerous for scripts
50 | public static let random = Flags(rawValue: 1 << 6)
| |- warning: static property 'random' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'random' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 |
52 | /// allow command while database is loading
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:53:23: warning: static property 'loading' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
51 |
52 | /// allow command while database is loading
53 | public static let loading = Flags(rawValue: 1 << 7)
| |- warning: static property 'loading' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'loading' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 |
55 | /// allow command while replica has stale data
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:56:23: warning: static property 'stale' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
54 |
55 | /// allow command while replica has stale data
56 | public static let stale = Flags(rawValue: 1 << 8)
| |- warning: static property 'stale' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'stale' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
57 |
58 | public static let fast = Flags(rawValue: 1 << 9)
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:58:23: warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
56 | public static let stale = Flags(rawValue: 1 << 8)
57 |
58 | public static let fast = Flags(rawValue: 1 << 9)
| |- warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'fast' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
59 |
60 | public static let sortForScript = Flags(rawValue: 1 << 10)
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:60:23: warning: static property 'sortForScript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
58 | public static let fast = Flags(rawValue: 1 << 9)
59 |
60 | public static let sortForScript = Flags(rawValue: 1 << 10)
| |- warning: static property 'sortForScript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sortForScript' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 |
62 | public var stringArray : [ String ] {
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:122:18: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
120 | ctx.context.writeAndFlush(NIOAny(RESPValue.ok))
121 | .whenComplete { _ in
122 | ctx.context.channel.close(promise: nil)
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:182:21: warning: capture of 'server' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
180 | server.Q.async {
181 |
182 | let clients = server.clients.values
| `- warning: capture of 'server' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
183 |
184 | // do not block the server
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:26:12: note: class 'RedisServer' does not conform to the 'Sendable' protocol
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:187:39: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
185 | listQueue.async {
186 | var count = clients.count
187 | guard count > 0 else { return ctx.write("") } // Never
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:186:22: warning: capture of 'clients' with non-sendable type 'Dictionary<ObjectIdentifier, RedisCommandHandler>.Values' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 | // do not block the server
185 | listQueue.async {
186 | var count = clients.count
| `- warning: capture of 'clients' with non-sendable type 'Dictionary<ObjectIdentifier, RedisCommandHandler>.Values' in a '@Sendable' closure; this is an error in the Swift 6 language mode
187 | guard count > 0 else { return ctx.write("") } // Never
188 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:187:39: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
185 | listQueue.async {
186 | var count = clients.count
187 | guard count > 0 else { return ctx.write("") } // Never
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:15: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in an isolated local function; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in an isolated local function; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:15: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:192:20: warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
190 | func yield(_ info: RedisCommandHandler.ClientInfo) {
191 | listQueue.async {
192 | assert(count > 0)
| `- warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
193 | count -= 1
194 |
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:193:13: warning: mutation of captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
191 | listQueue.async {
192 | assert(count > 0)
193 | count -= 1
| `- warning: mutation of captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
194 |
195 | result.writeString(info.redisClientLogLine)
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:195:13: warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
193 | count -= 1
194 |
195 | result.writeString(info.redisClientLogLine)
| `- warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
196 | result.writeInteger(10 as UInt8)
197 |
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:196:13: warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
194 |
195 | result.writeString(info.redisClientLogLine)
196 | result.writeInteger(10 as UInt8)
| `- warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:198:16: warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
196 | result.writeInteger(10 as UInt8)
197 |
198 | if count == 0 {
| `- warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
199 | ctx.write(.bulkString(result))
200 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:37: warning: reference to captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: reference to captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:209:15: warning: capture of 'yield' with non-sendable type '(RedisCommandHandler.ClientInfo) -> ()' in a '@Sendable' closure
207 | if let eventLoop = client.eventLoop {
208 | eventLoop.execute {
209 | yield(client.getClientInfo())
| |- warning: capture of 'yield' with non-sendable type '(RedisCommandHandler.ClientInfo) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
210 | }
211 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:209:21: warning: capture of 'client' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
207 | if let eventLoop = client.eventLoop {
208 | eventLoop.execute {
209 | yield(client.getClientInfo())
| `- warning: capture of 'client' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
210 | }
211 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:190:14: warning: concurrently-executed local function 'yield' must be marked as '@Sendable'
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
190 | func yield(_ info: RedisCommandHandler.ClientInfo) {
| `- warning: concurrently-executed local function 'yield' must be marked as '@Sendable'
191 | listQueue.async {
192 | assert(count > 0)
/host/spi-builder-workspace/Sources/RedisServer/Commands/SetCommands.swift:36:9: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
34 |
35 | ctx.eventLoop.execute {
36 | ctx.write(set.toRESPValue())
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
37 | }
38 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
[273/286] Compiling RedisServer SetCommands.swift
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:32:23: warning: static property 'write' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
30 |
31 | /// command may result in modifications
32 | public static let write = Flags(rawValue: 1 << 0)
| |- warning: static property 'write' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'write' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |
34 | /// command will never modify keys
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:35:23: warning: static property 'readonly' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
33 |
34 | /// command will never modify keys
35 | public static let readonly = Flags(rawValue: 1 << 1)
| |- warning: static property 'readonly' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'readonly' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |
37 | /// reject command if currently OOM
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:38:23: warning: static property 'denyoom' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
36 |
37 | /// reject command if currently OOM
38 | public static let denyoom = Flags(rawValue: 1 << 2)
| |- warning: static property 'denyoom' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'denyoom' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
39 |
40 | /// server admin command
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:41:23: warning: static property 'admin' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
39 |
40 | /// server admin command
41 | public static let admin = Flags(rawValue: 1 << 3)
| |- warning: static property 'admin' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'admin' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// pubsub-related command
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:44:23: warning: static property 'pubsub' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
42 |
43 | /// pubsub-related command
44 | public static let pubsub = Flags(rawValue: 1 << 4)
| |- warning: static property 'pubsub' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'pubsub' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
45 |
46 | /// deny this command from scripts
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:47:23: warning: static property 'noscript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
45 |
46 | /// deny this command from scripts
47 | public static let noscript = Flags(rawValue: 1 << 5)
| |- warning: static property 'noscript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'noscript' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
48 |
49 | /// command has random results, dangerous for scripts
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:50:23: warning: static property 'random' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
48 |
49 | /// command has random results, dangerous for scripts
50 | public static let random = Flags(rawValue: 1 << 6)
| |- warning: static property 'random' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'random' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
51 |
52 | /// allow command while database is loading
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:53:23: warning: static property 'loading' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
51 |
52 | /// allow command while database is loading
53 | public static let loading = Flags(rawValue: 1 << 7)
| |- warning: static property 'loading' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'loading' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
54 |
55 | /// allow command while replica has stale data
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:56:23: warning: static property 'stale' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
54 |
55 | /// allow command while replica has stale data
56 | public static let stale = Flags(rawValue: 1 << 8)
| |- warning: static property 'stale' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'stale' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
57 |
58 | public static let fast = Flags(rawValue: 1 << 9)
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:58:23: warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
56 | public static let stale = Flags(rawValue: 1 << 8)
57 |
58 | public static let fast = Flags(rawValue: 1 << 9)
| |- warning: static property 'fast' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'fast' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
59 |
60 | public static let sortForScript = Flags(rawValue: 1 << 10)
/host/spi-builder-workspace/Sources/RedisServer/Commands/RedisCommand.swift:60:23: warning: static property 'sortForScript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
23 | public let flags : Flags
24 |
25 | public struct Flags : OptionSet, RESPEncodable, CustomStringConvertible {
| `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
26 |
27 | public let rawValue : Int
:
58 | public static let fast = Flags(rawValue: 1 << 9)
59 |
60 | public static let sortForScript = Flags(rawValue: 1 << 10)
| |- warning: static property 'sortForScript' is not concurrency-safe because non-'Sendable' type 'RedisCommand.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'sortForScript' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
61 |
62 | public var stringArray : [ String ] {
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:122:18: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
120 | ctx.context.writeAndFlush(NIOAny(RESPValue.ok))
121 | .whenComplete { _ in
122 | ctx.context.channel.close(promise: nil)
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:182:21: warning: capture of 'server' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
180 | server.Q.async {
181 |
182 | let clients = server.clients.values
| `- warning: capture of 'server' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
183 |
184 | // do not block the server
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:26:12: note: class 'RedisServer' does not conform to the 'Sendable' protocol
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:187:39: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
185 | listQueue.async {
186 | var count = clients.count
187 | guard count > 0 else { return ctx.write("") } // Never
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:186:22: warning: capture of 'clients' with non-sendable type 'Dictionary<ObjectIdentifier, RedisCommandHandler>.Values' in a '@Sendable' closure; this is an error in the Swift 6 language mode
184 | // do not block the server
185 | listQueue.async {
186 | var count = clients.count
| `- warning: capture of 'clients' with non-sendable type 'Dictionary<ObjectIdentifier, RedisCommandHandler>.Values' in a '@Sendable' closure; this is an error in the Swift 6 language mode
187 | guard count > 0 else { return ctx.write("") } // Never
188 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:187:39: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
185 | listQueue.async {
186 | var count = clients.count
187 | guard count > 0 else { return ctx.write("") } // Never
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:15: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in an isolated local function; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in an isolated local function; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:15: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:192:20: warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
190 | func yield(_ info: RedisCommandHandler.ClientInfo) {
191 | listQueue.async {
192 | assert(count > 0)
| `- warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
193 | count -= 1
194 |
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:193:13: warning: mutation of captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
191 | listQueue.async {
192 | assert(count > 0)
193 | count -= 1
| `- warning: mutation of captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
194 |
195 | result.writeString(info.redisClientLogLine)
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:195:13: warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
193 | count -= 1
194 |
195 | result.writeString(info.redisClientLogLine)
| `- warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
196 | result.writeInteger(10 as UInt8)
197 |
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:196:13: warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
194 |
195 | result.writeString(info.redisClientLogLine)
196 | result.writeInteger(10 as UInt8)
| `- warning: mutation of captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:198:16: warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
196 | result.writeInteger(10 as UInt8)
197 |
198 | if count == 0 {
| `- warning: reference to captured var 'count' in concurrently-executing code; this is an error in the Swift 6 language mode
199 | ctx.write(.bulkString(result))
200 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:199:37: warning: reference to captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
197 |
198 | if count == 0 {
199 | ctx.write(.bulkString(result))
| `- warning: reference to captured var 'result' in concurrently-executing code; this is an error in the Swift 6 language mode
200 | }
201 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:209:15: warning: capture of 'yield' with non-sendable type '(RedisCommandHandler.ClientInfo) -> ()' in a '@Sendable' closure
207 | if let eventLoop = client.eventLoop {
208 | eventLoop.execute {
209 | yield(client.getClientInfo())
| |- warning: capture of 'yield' with non-sendable type '(RedisCommandHandler.ClientInfo) -> ()' in a '@Sendable' closure
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
210 | }
211 | }
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:209:21: warning: capture of 'client' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
207 | if let eventLoop = client.eventLoop {
208 | eventLoop.execute {
209 | yield(client.getClientInfo())
| `- warning: capture of 'client' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure
210 | }
211 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Commands/ServerCommands.swift:190:14: warning: concurrently-executed local function 'yield' must be marked as '@Sendable'
188 |
189 | var result = ByteBufferAllocator().buffer(capacity: 1024)
190 | func yield(_ info: RedisCommandHandler.ClientInfo) {
| `- warning: concurrently-executed local function 'yield' must be marked as '@Sendable'
191 | listQueue.async {
192 | assert(count > 0)
/host/spi-builder-workspace/Sources/RedisServer/Commands/SetCommands.swift:36:9: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
34 |
35 | ctx.eventLoop.execute {
36 | ctx.write(set.toRESPValue())
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
37 | }
38 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
[274/286] Compiling RedisServer StringCommands.swift
/host/spi-builder-workspace/Sources/RedisServer/Commands/StringCommands.swift:227:47: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
225 |
226 | ctx.eventLoop.execute {
227 | guard let value = value else { return ctx.write(.bulkString(nil)) }
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
228 | ctx.write(value)
229 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:122:7: warning: capture of 'cb' with non-sendable type '(Date, TimeInterval) -> Void' (aka '(Date, Double) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
120 | func getLastSave(_ cb: @escaping ( Date, TimeInterval ) -> Void) {
121 | Q.async {
122 | cb(self.lastSave, self.lastSaveDuration)
| |- warning: capture of 'cb' with non-sendable type '(Date, TimeInterval) -> Void' (aka '(Date, Double) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:122:10: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
120 | func getLastSave(_ cb: @escaping ( Date, TimeInterval ) -> Void) {
121 | Q.async {
122 | cb(self.lastSave, self.lastSaveDuration)
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:132:9: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
130 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
131 | Q.async {
132 | self.lastSave = lastSave
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
133 | self.lastSaveDuration = diff
134 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:139:40: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
137 | Q.async {
138 | do {
139 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
140 | self.lastSave = lastSave
141 | self.lastSaveDuration = diff
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:139:59: warning: capture of 'databases' with non-sendable type 'Databases' in a '@Sendable' closure; this is an error in the Swift 6 language mode
137 | Q.async {
138 | do {
139 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
| `- warning: capture of 'databases' with non-sendable type 'Databases' in a '@Sendable' closure; this is an error in the Swift 6 language mode
140 | self.lastSave = lastSave
141 | self.lastSaveDuration = diff
/host/spi-builder-workspace/Sources/RedisServer/Database/Database.swift:50:13: note: class 'Databases' does not conform to the 'Sendable' protocol
48 | * Hashable etc.
49 | */
50 | final class Databases : Codable {
| `- note: class 'Databases' does not conform to the 'Sendable' protocol
51 |
52 | typealias SavePoints = ContiguousArray<SavePoint>
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:185:29: warning: capture of 'me' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
183 | // Careful: running in DB thread
184 | me.Q.async {
185 | me._scheduleSave(in: savePoint.delay)
| `- warning: capture of 'me' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
186 | }
187 | })
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:185:50: warning: capture of 'savePoint' with non-sendable type 'Databases.SavePoint' (aka 'RedisServer.Configuration.SavePoint') in a '@Sendable' closure; this is an error in the Swift 6 language mode
183 | // Careful: running in DB thread
184 | me.Q.async {
185 | me._scheduleSave(in: savePoint.delay)
| `- warning: capture of 'savePoint' with non-sendable type 'Databases.SavePoint' (aka 'RedisServer.Configuration.SavePoint') in a '@Sendable' closure; this is an error in the Swift 6 language mode
186 | }
187 | })
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:32:19: note: consider making struct 'SavePoint' conform to the 'Sendable' protocol
30 | open class Configuration {
31 |
32 | public struct SavePoint {
| `- note: consider making struct 'SavePoint' conform to the 'Sendable' protocol
33 | public let delay : TimeInterval
34 | public let changeCount : Int
[275/286] Compiling RedisServer Database.swift
/host/spi-builder-workspace/Sources/RedisServer/Commands/StringCommands.swift:227:47: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
225 |
226 | ctx.eventLoop.execute {
227 | guard let value = value else { return ctx.write(.bulkString(nil)) }
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
228 | ctx.write(value)
229 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:122:7: warning: capture of 'cb' with non-sendable type '(Date, TimeInterval) -> Void' (aka '(Date, Double) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
120 | func getLastSave(_ cb: @escaping ( Date, TimeInterval ) -> Void) {
121 | Q.async {
122 | cb(self.lastSave, self.lastSaveDuration)
| |- warning: capture of 'cb' with non-sendable type '(Date, TimeInterval) -> Void' (aka '(Date, Double) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:122:10: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
120 | func getLastSave(_ cb: @escaping ( Date, TimeInterval ) -> Void) {
121 | Q.async {
122 | cb(self.lastSave, self.lastSaveDuration)
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:132:9: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
130 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
131 | Q.async {
132 | self.lastSave = lastSave
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
133 | self.lastSaveDuration = diff
134 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:139:40: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
137 | Q.async {
138 | do {
139 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
140 | self.lastSave = lastSave
141 | self.lastSaveDuration = diff
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:139:59: warning: capture of 'databases' with non-sendable type 'Databases' in a '@Sendable' closure; this is an error in the Swift 6 language mode
137 | Q.async {
138 | do {
139 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
| `- warning: capture of 'databases' with non-sendable type 'Databases' in a '@Sendable' closure; this is an error in the Swift 6 language mode
140 | self.lastSave = lastSave
141 | self.lastSaveDuration = diff
/host/spi-builder-workspace/Sources/RedisServer/Database/Database.swift:50:13: note: class 'Databases' does not conform to the 'Sendable' protocol
48 | * Hashable etc.
49 | */
50 | final class Databases : Codable {
| `- note: class 'Databases' does not conform to the 'Sendable' protocol
51 |
52 | typealias SavePoints = ContiguousArray<SavePoint>
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:185:29: warning: capture of 'me' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
183 | // Careful: running in DB thread
184 | me.Q.async {
185 | me._scheduleSave(in: savePoint.delay)
| `- warning: capture of 'me' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
186 | }
187 | })
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:185:50: warning: capture of 'savePoint' with non-sendable type 'Databases.SavePoint' (aka 'RedisServer.Configuration.SavePoint') in a '@Sendable' closure; this is an error in the Swift 6 language mode
183 | // Careful: running in DB thread
184 | me.Q.async {
185 | me._scheduleSave(in: savePoint.delay)
| `- warning: capture of 'savePoint' with non-sendable type 'Databases.SavePoint' (aka 'RedisServer.Configuration.SavePoint') in a '@Sendable' closure; this is an error in the Swift 6 language mode
186 | }
187 | })
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:32:19: note: consider making struct 'SavePoint' conform to the 'Sendable' protocol
30 | open class Configuration {
31 |
32 | public struct SavePoint {
| `- note: consider making struct 'SavePoint' conform to the 'Sendable' protocol
33 | public let delay : TimeInterval
34 | public let changeCount : Int
[276/286] Compiling RedisServer DumpManager.swift
/host/spi-builder-workspace/Sources/RedisServer/Commands/StringCommands.swift:227:47: warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
225 |
226 | ctx.eventLoop.execute {
227 | guard let value = value else { return ctx.write(.bulkString(nil)) }
| `- warning: capture of 'ctx' with non-sendable type 'Commands.CommandContext' (aka 'RedisCommandContext') in a '@Sendable' closure
228 | ctx.write(value)
229 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandContext.swift:22:15: note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
20 | * The environment commands need to run.
21 | */
22 | public struct RedisCommandContext {
| `- note: consider making struct 'RedisCommandContext' conform to the 'Sendable' protocol
23 |
24 | let command : RedisCommand
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:122:7: warning: capture of 'cb' with non-sendable type '(Date, TimeInterval) -> Void' (aka '(Date, Double) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
120 | func getLastSave(_ cb: @escaping ( Date, TimeInterval ) -> Void) {
121 | Q.async {
122 | cb(self.lastSave, self.lastSaveDuration)
| |- warning: capture of 'cb' with non-sendable type '(Date, TimeInterval) -> Void' (aka '(Date, Double) -> ()') in a '@Sendable' closure; this is an error in the Swift 6 language mode
| `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:122:10: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
120 | func getLastSave(_ cb: @escaping ( Date, TimeInterval ) -> Void) {
121 | Q.async {
122 | cb(self.lastSave, self.lastSaveDuration)
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
123 | }
124 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:132:9: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
130 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
131 | Q.async {
132 | self.lastSave = lastSave
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
133 | self.lastSaveDuration = diff
134 | }
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:139:40: warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
137 | Q.async {
138 | do {
139 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
| `- warning: capture of 'self' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
140 | self.lastSave = lastSave
141 | self.lastSaveDuration = diff
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:139:59: warning: capture of 'databases' with non-sendable type 'Databases' in a '@Sendable' closure; this is an error in the Swift 6 language mode
137 | Q.async {
138 | do {
139 | let ( lastSave, diff ) = try self._saveDump(of: databases, to: url)
| `- warning: capture of 'databases' with non-sendable type 'Databases' in a '@Sendable' closure; this is an error in the Swift 6 language mode
140 | self.lastSave = lastSave
141 | self.lastSaveDuration = diff
/host/spi-builder-workspace/Sources/RedisServer/Database/Database.swift:50:13: note: class 'Databases' does not conform to the 'Sendable' protocol
48 | * Hashable etc.
49 | */
50 | final class Databases : Codable {
| `- note: class 'Databases' does not conform to the 'Sendable' protocol
51 |
52 | typealias SavePoints = ContiguousArray<SavePoint>
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:185:29: warning: capture of 'me' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
50 | }
51 |
52 | class SimpleJSONDumpManager : DumpManager {
| `- note: class 'SimpleJSONDumpManager' does not conform to the 'Sendable' protocol
53 |
54 | let Q = DispatchQueue(label: "de.zeezide.nio.redisd.dump")
:
183 | // Careful: running in DB thread
184 | me.Q.async {
185 | me._scheduleSave(in: savePoint.delay)
| `- warning: capture of 'me' with non-sendable type 'SimpleJSONDumpManager' in a '@Sendable' closure; this is an error in the Swift 6 language mode
186 | }
187 | })
/host/spi-builder-workspace/Sources/RedisServer/Database/DumpManager.swift:185:50: warning: capture of 'savePoint' with non-sendable type 'Databases.SavePoint' (aka 'RedisServer.Configuration.SavePoint') in a '@Sendable' closure; this is an error in the Swift 6 language mode
183 | // Careful: running in DB thread
184 | me.Q.async {
185 | me._scheduleSave(in: savePoint.delay)
| `- warning: capture of 'savePoint' with non-sendable type 'Databases.SavePoint' (aka 'RedisServer.Configuration.SavePoint') in a '@Sendable' closure; this is an error in the Swift 6 language mode
186 | }
187 | })
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:32:19: note: consider making struct 'SavePoint' conform to the 'Sendable' protocol
30 | open class Configuration {
31 |
32 | public struct SavePoint {
| `- note: consider making struct 'SavePoint' conform to the 'Sendable' protocol
33 | public let delay : TimeInterval
34 | public let changeCount : Int
[277/286] Compiling RedisServer RedisCommandHandler.swift
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:82:11: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
80 | server.pubSub.Q.async {
81 | for channel in channels {
82 | self.server.pubSub.unsubscribe(channel, handler: self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
83 | }
84 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:91:11: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
89 | server.pubSub.Q.async {
90 | for pattern in patterns {
91 | self.server.pubSub.unsubscribe(pattern, handler: self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
92 | }
93 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:99:7: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
97 |
98 | server.Q.async {
99 | self.server._unregisterClient(self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
100 | }
101 | self.channel = nil
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:113:13: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
111 | }
112 |
113 | channel.writeAndFlush(payload, promise: nil)
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 | }
115 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import class Atomics.ManagedAtomic
18 | import struct Foundation.Data
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:98:20: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
96 | Q.async { // Safe? Unsafe. No idea. Probably not :-)
97 | // TODO: I think the proper trick is to use a pipe here.
98 | if let dbs = self.databases {
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
99 | do {
100 | self.logger.warn("User requested shutdown...")
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:230:17: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
230 | channel.writeAndFlush(logPacket, promise: nil)
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
231 | }
232 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:21:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
19 | import class Foundation.JSONDecoder
20 | import class Atomics.ManagedAtomic
21 | import enum NIORedis.RESPValue
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
22 | import NIO
23 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:227:28: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
225 |
226 | Q.async {
227 | for ( _, client ) in self.clients {
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:230:31: warning: capture of 'logPacket' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
230 | channel.writeAndFlush(logPacket, promise: nil)
| `- warning: capture of 'logPacket' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
231 | }
232 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:251:23: warning: conformance of 'BackPressureHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
249 | .childChannelInitializer { channel in
250 | channel.pipeline
251 | .addHandler(BackPressureHandler() /* Oh well :-) */,
| `- warning: conformance of 'BackPressureHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
252 | name: "com.apple.nio.backpressure")
253 | .flatMap {
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelHandlers.swift:179:1: note: conformance of 'BackPressureHandler' to 'Sendable' has been explicitly marked unavailable here
177 |
178 | @available(*, unavailable)
179 | extension BackPressureHandler: Sendable {}
| `- note: conformance of 'BackPressureHandler' to 'Sendable' has been explicitly marked unavailable here
180 |
181 | /// Triggers an IdleStateEvent when a Channel has not performed read, write, or both operation for a while.
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:262:27: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol
260 |
261 | return channel.pipeline
262 | .addHandler(handler, name:"de.zeezide.nio.redis.server.client")
| `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol
263 | }
264 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:255:64: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
253 | .flatMap {
254 | let cid = clientID.wrappingIncrementThenLoad(ordering: .relaxed)
255 | let handler = RedisCommandHandler(id: cid, server: self)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
256 |
257 | self.Q.async {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:255:64: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
253 | .flatMap {
254 | let cid = clientID.wrappingIncrementThenLoad(ordering: .relaxed)
255 | let handler = RedisCommandHandler(id: cid, server: self)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
256 |
257 | self.Q.async {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:258:15: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
256 |
257 | self.Q.async {
258 | self._registerClient(handler)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
259 | }
260 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:258:36: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
256 |
257 | self.Q.async {
258 | self._registerClient(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
259 | }
260 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
[278/286] Compiling RedisServer RedisServer.swift
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:82:11: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
80 | server.pubSub.Q.async {
81 | for channel in channels {
82 | self.server.pubSub.unsubscribe(channel, handler: self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
83 | }
84 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:91:11: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
89 | server.pubSub.Q.async {
90 | for pattern in patterns {
91 | self.server.pubSub.unsubscribe(pattern, handler: self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
92 | }
93 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:99:7: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
97 |
98 | server.Q.async {
99 | self.server._unregisterClient(self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
100 | }
101 | self.channel = nil
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:113:13: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
111 | }
112 |
113 | channel.writeAndFlush(payload, promise: nil)
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 | }
115 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import class Atomics.ManagedAtomic
18 | import struct Foundation.Data
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:98:20: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
96 | Q.async { // Safe? Unsafe. No idea. Probably not :-)
97 | // TODO: I think the proper trick is to use a pipe here.
98 | if let dbs = self.databases {
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
99 | do {
100 | self.logger.warn("User requested shutdown...")
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:230:17: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
230 | channel.writeAndFlush(logPacket, promise: nil)
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
231 | }
232 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:21:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
19 | import class Foundation.JSONDecoder
20 | import class Atomics.ManagedAtomic
21 | import enum NIORedis.RESPValue
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
22 | import NIO
23 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:227:28: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
225 |
226 | Q.async {
227 | for ( _, client ) in self.clients {
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:230:31: warning: capture of 'logPacket' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
230 | channel.writeAndFlush(logPacket, promise: nil)
| `- warning: capture of 'logPacket' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
231 | }
232 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:251:23: warning: conformance of 'BackPressureHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
249 | .childChannelInitializer { channel in
250 | channel.pipeline
251 | .addHandler(BackPressureHandler() /* Oh well :-) */,
| `- warning: conformance of 'BackPressureHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
252 | name: "com.apple.nio.backpressure")
253 | .flatMap {
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelHandlers.swift:179:1: note: conformance of 'BackPressureHandler' to 'Sendable' has been explicitly marked unavailable here
177 |
178 | @available(*, unavailable)
179 | extension BackPressureHandler: Sendable {}
| `- note: conformance of 'BackPressureHandler' to 'Sendable' has been explicitly marked unavailable here
180 |
181 | /// Triggers an IdleStateEvent when a Channel has not performed read, write, or both operation for a while.
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:262:27: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol
260 |
261 | return channel.pipeline
262 | .addHandler(handler, name:"de.zeezide.nio.redis.server.client")
| `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol
263 | }
264 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:255:64: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
253 | .flatMap {
254 | let cid = clientID.wrappingIncrementThenLoad(ordering: .relaxed)
255 | let handler = RedisCommandHandler(id: cid, server: self)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
256 |
257 | self.Q.async {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:255:64: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
253 | .flatMap {
254 | let cid = clientID.wrappingIncrementThenLoad(ordering: .relaxed)
255 | let handler = RedisCommandHandler(id: cid, server: self)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
256 |
257 | self.Q.async {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:258:15: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
256 |
257 | self.Q.async {
258 | self._registerClient(handler)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
259 | }
260 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:258:36: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
256 |
257 | self.Q.async {
258 | self._registerClient(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
259 | }
260 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
[279/286] Compiling RedisServer RedisError.swift
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:82:11: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
80 | server.pubSub.Q.async {
81 | for channel in channels {
82 | self.server.pubSub.unsubscribe(channel, handler: self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
83 | }
84 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:91:11: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
89 | server.pubSub.Q.async {
90 | for pattern in patterns {
91 | self.server.pubSub.unsubscribe(pattern, handler: self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
92 | }
93 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:99:7: warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
:
97 |
98 | server.Q.async {
99 | self.server._unregisterClient(self)
| `- warning: capture of 'self' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
100 | }
101 | self.channel = nil
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:113:13: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
111 | }
112 |
113 | channel.writeAndFlush(payload, promise: nil)
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
114 | }
115 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import class Atomics.ManagedAtomic
18 | import struct Foundation.Data
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:98:20: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
96 | Q.async { // Safe? Unsafe. No idea. Probably not :-)
97 | // TODO: I think the proper trick is to use a pipe here.
98 | if let dbs = self.databases {
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
99 | do {
100 | self.logger.warn("User requested shutdown...")
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:230:17: warning: type 'RESPValue' does not conform to the 'Sendable' protocol
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
230 | channel.writeAndFlush(logPacket, promise: nil)
| `- warning: type 'RESPValue' does not conform to the 'Sendable' protocol
231 | }
232 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:21:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
19 | import class Foundation.JSONDecoder
20 | import class Atomics.ManagedAtomic
21 | import enum NIORedis.RESPValue
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
22 | import NIO
23 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:227:28: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
225 |
226 | Q.async {
227 | for ( _, client ) in self.clients {
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:230:31: warning: capture of 'logPacket' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
228 | guard client.isMonitoring.load(ordering: .relaxed) else { continue }
229 | guard let channel = client.channel else { continue }
230 | channel.writeAndFlush(logPacket, promise: nil)
| `- warning: capture of 'logPacket' with non-sendable type 'RESPValue' in a '@Sendable' closure; this is an error in the Swift 6 language mode
231 | }
232 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:251:23: warning: conformance of 'BackPressureHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
249 | .childChannelInitializer { channel in
250 | channel.pipeline
251 | .addHandler(BackPressureHandler() /* Oh well :-) */,
| `- warning: conformance of 'BackPressureHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
252 | name: "com.apple.nio.backpressure")
253 | .flatMap {
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelHandlers.swift:179:1: note: conformance of 'BackPressureHandler' to 'Sendable' has been explicitly marked unavailable here
177 |
178 | @available(*, unavailable)
179 | extension BackPressureHandler: Sendable {}
| `- note: conformance of 'BackPressureHandler' to 'Sendable' has been explicitly marked unavailable here
180 |
181 | /// Triggers an IdleStateEvent when a Channel has not performed read, write, or both operation for a while.
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:262:27: warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol
260 |
261 | return channel.pipeline
262 | .addHandler(handler, name:"de.zeezide.nio.redis.server.client")
| `- warning: type 'RedisCommandHandler' does not conform to the 'Sendable' protocol
263 | }
264 | }
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:255:64: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
253 | .flatMap {
254 | let cid = clientID.wrappingIncrementThenLoad(ordering: .relaxed)
255 | let handler = RedisCommandHandler(id: cid, server: self)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
256 |
257 | self.Q.async {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:255:64: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
253 | .flatMap {
254 | let cid = clientID.wrappingIncrementThenLoad(ordering: .relaxed)
255 | let handler = RedisCommandHandler(id: cid, server: self)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure
256 |
257 | self.Q.async {
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:258:15: warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
24 | public let DefaultRedisPort = 6379
25 |
26 | open class RedisServer {
| `- note: class 'RedisServer' does not conform to the 'Sendable' protocol
27 |
28 | public typealias Command = RedisCommand
:
256 |
257 | self.Q.async {
258 | self._registerClient(handler)
| `- warning: capture of 'self' with non-sendable type 'RedisServer' in a '@Sendable' closure; this is an error in the Swift 6 language mode
259 | }
260 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisServer.swift:258:36: warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
256 |
257 | self.Q.async {
258 | self._registerClient(handler)
| `- warning: capture of 'handler' with non-sendable type 'RedisCommandHandler' in a '@Sendable' closure; this is an error in the Swift 6 language mode
259 | }
260 |
/host/spi-builder-workspace/Sources/RedisServer/Server/RedisCommandHandler.swift:32:13: note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
30 | *
31 | */
32 | final class RedisCommandHandler : RESPChannelHandler {
| `- note: class 'RedisCommandHandler' does not conform to the 'Sendable' protocol
33 | // See [Avoid NIO Pipeline](Performance.md#avoid-nio-pipeline-for-non-bb)
34 | // for the reason why this is a subclass (instead of a consumer of the
[280/286] Compiling RedisServer RedisList.swift
/host/spi-builder-workspace/Sources/RedisServer/Values/RedisValue.swift:279:14: warning: static property 'ok' is not concurrency-safe because non-'Sendable' type 'RESPValue' may have shared mutable state; this is an error in the Swift 6 language mode
277 |
278 | extension RESPValue {
279 | static let ok = RESPValue(simpleString: "OK")
| `- warning: static property 'ok' is not concurrency-safe because non-'Sendable' type 'RESPValue' may have shared mutable state; this is an error in the Swift 6 language mode
280 | }
281 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Values/RedisValue.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import Foundation
18 |
:
277 |
278 | extension RESPValue {
279 | static let ok = RESPValue(simpleString: "OK")
| |- note: add '@MainActor' to make static property 'ok' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
280 | }
281 |
[281/286] Compiling RedisServer RedisValue.swift
/host/spi-builder-workspace/Sources/RedisServer/Values/RedisValue.swift:279:14: warning: static property 'ok' is not concurrency-safe because non-'Sendable' type 'RESPValue' may have shared mutable state; this is an error in the Swift 6 language mode
277 |
278 | extension RESPValue {
279 | static let ok = RESPValue(simpleString: "OK")
| `- warning: static property 'ok' is not concurrency-safe because non-'Sendable' type 'RESPValue' may have shared mutable state; this is an error in the Swift 6 language mode
280 | }
281 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Values/RedisValue.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import Foundation
18 |
:
277 |
278 | extension RESPValue {
279 | static let ok = RESPValue(simpleString: "OK")
| |- note: add '@MainActor' to make static property 'ok' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
280 | }
281 |
[282/286] Compiling RedisServer RedisValueCoding.swift
/host/spi-builder-workspace/Sources/RedisServer/Values/RedisValue.swift:279:14: warning: static property 'ok' is not concurrency-safe because non-'Sendable' type 'RESPValue' may have shared mutable state; this is an error in the Swift 6 language mode
277 |
278 | extension RESPValue {
279 | static let ok = RESPValue(simpleString: "OK")
| `- warning: static property 'ok' is not concurrency-safe because non-'Sendable' type 'RESPValue' may have shared mutable state; this is an error in the Swift 6 language mode
280 | }
281 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-redis/Sources/NIORedis/RESPValue.swift:18:13: note: enum 'RESPValue' does not conform to the 'Sendable' protocol
16 | import Foundation
17 |
18 | public enum RESPValue {
| `- note: enum 'RESPValue' does not conform to the 'Sendable' protocol
19 | case simpleString(ByteBuffer)
20 | case bulkString (ByteBuffer?)
/host/spi-builder-workspace/Sources/RedisServer/Values/RedisValue.swift:16:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
14 |
15 | import NIO
16 | import NIORedis
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIORedis'
17 | import Foundation
18 |
:
277 |
278 | extension RESPValue {
279 | static let ok = RESPValue(simpleString: "OK")
| |- note: add '@MainActor' to make static property 'ok' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
280 | }
281 |
[283/287] Wrapping AST for RedisServer for debugging
[285/290] Compiling redi_s ConfigFile.swift
[286/290] Emitting module redi_s
[287/290] Compiling redi_s main.swift
[288/291] Wrapping AST for redi-s for debugging
[289/291] Write Objects.LinkFileList
[290/291] Linking redi-s
Build complete! (64.22s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-nio-redis",
"requirement" : {
"range" : [
{
"lower_bound" : "0.11.0",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/SwiftNIOExtras/swift-nio-redis.git"
},
{
"identity" : "swift-atomics",
"requirement" : {
"range" : [
{
"lower_bound" : "1.0.0",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/apple/swift-atomics"
}
],
"manifest_display_name" : "redi-s",
"name" : "redi-s",
"path" : "/host/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "RedisServer",
"targets" : [
"RedisServer"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "redi-s",
"targets" : [
"redi-s"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "redi_s",
"module_type" : "SwiftTarget",
"name" : "redi-s",
"path" : "Sources/redi-s",
"product_memberships" : [
"redi-s"
],
"sources" : [
"ConfigFile.swift",
"main.swift"
],
"target_dependencies" : [
"RedisServer"
],
"type" : "executable"
},
{
"c99name" : "RedisServer",
"module_type" : "SwiftTarget",
"name" : "RedisServer",
"path" : "Sources/RedisServer",
"product_dependencies" : [
"NIORedis",
"Atomics"
],
"product_memberships" : [
"RedisServer",
"redi-s"
],
"sources" : [
"Commands/CommandTable.swift",
"Commands/CommandType.swift",
"Commands/ExpirationCommands.swift",
"Commands/HashCommands.swift",
"Commands/IntCommands.swift",
"Commands/KeyCommands.swift",
"Commands/ListCommands.swift",
"Commands/PubSubCommands.swift",
"Commands/RedisCommand.swift",
"Commands/ServerCommands.swift",
"Commands/SetCommands.swift",
"Commands/StringCommands.swift",
"Database/Database.swift",
"Database/DumpManager.swift",
"Helpers/RedisLogger.swift",
"Helpers/RedisPattern.swift",
"Helpers/Utilities.swift",
"Server/Monitor.swift",
"Server/PubSub.swift",
"Server/RedisCommandContext.swift",
"Server/RedisCommandHandler.swift",
"Server/RedisServer.swift",
"Values/RedisError.swift",
"Values/RedisList.swift",
"Values/RedisValue.swift",
"Values/RedisValueCoding.swift"
],
"type" : "library"
}
],
"tools_version" : "5.0"
}
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Done.