From d973ab9941ee0ffda65521bb430373d3011b296b Mon Sep 17 00:00:00 2001 From: Fabian Fett Date: Tue, 8 Oct 2024 17:45:52 +0200 Subject: [PATCH 1/2] Use Mutex instead of NIOLockedValueBox --- Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift index 908e2ab2..b75370f9 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift @@ -14,15 +14,11 @@ import Foundation import Logging -import NIOConcurrencyHelpers +import Synchronization import NIOCore -// We need `@unchecked` Sendable here, as `NIOLockedValueBox` does not understand `sending` today. -// We don't want to use `NIOLockedValueBox` here anyway. We would love to use Mutex here, but this -// sadly crashes the compiler today. -public final class LambdaRuntime: @unchecked Sendable where Handler: StreamingLambdaHandler { - // TODO: We want to change this to Mutex as soon as this doesn't crash the Swift compiler on Linux anymore - let handlerMutex: NIOLockedValueBox +public final class LambdaRuntime: Sendable where Handler: StreamingLambdaHandler { + let handlerMutex: Mutex let logger: Logger let eventLoop: EventLoop @@ -31,7 +27,7 @@ public final class LambdaRuntime: @unchecked Sendable where Handler: St eventLoop: EventLoop = Lambda.defaultEventLoop, logger: Logger = Logger(label: "LambdaRuntime") ) { - self.handlerMutex = NIOLockedValueBox(handler) + self.handlerMutex = Mutex(handler) self.eventLoop = eventLoop self.logger = logger } @@ -45,7 +41,7 @@ public final class LambdaRuntime: @unchecked Sendable where Handler: St let ip = String(ipAndPort[0]) guard let port = Int(ipAndPort[1]) else { throw LambdaRuntimeError(code: .invalidPort) } - let handler = self.handlerMutex.withLockedValue { handler in + let handler = self.handlerMutex.withLock { handler in let result = handler handler = nil return result From 2c5167bb6ee7d581fd58bcaa3af0c669c64503fb Mon Sep 17 00:00:00 2001 From: Fabian Fett Date: Tue, 8 Oct 2024 17:48:09 +0200 Subject: [PATCH 2/2] fix format --- Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift index b75370f9..7fd98cd6 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRuntime.swift @@ -14,8 +14,8 @@ import Foundation import Logging -import Synchronization import NIOCore +import Synchronization public final class LambdaRuntime: Sendable where Handler: StreamingLambdaHandler { let handlerMutex: Mutex