From 0892e479154f16f7accf4bb92d266206c0163f4f Mon Sep 17 00:00:00 2001 From: tom doron Date: Tue, 10 Jan 2023 09:18:45 -0800 Subject: [PATCH 1/2] fix concurrency api isage motivation: cleanup incorrect concurent code in test changes: use .get instead of .wait --- Tests/AWSLambdaRuntimeCoreTests/LambdaTest.swift | 10 +++++----- docker/docker-compose.yaml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Tests/AWSLambdaRuntimeCoreTests/LambdaTest.swift b/Tests/AWSLambdaRuntimeCoreTests/LambdaTest.swift index fefa6c4f..ffb50953 100644 --- a/Tests/AWSLambdaRuntimeCoreTests/LambdaTest.swift +++ b/Tests/AWSLambdaRuntimeCoreTests/LambdaTest.swift @@ -266,7 +266,7 @@ class LambdaTest: XCTestCase { let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1) defer { XCTAssertNoThrow(try eventLoopGroup.syncShutdownGracefully()) } - let server = try MockLambdaServer(behavior: Behavior()).start().wait() + let server = try await MockLambdaServer(behavior: Behavior()).start().get() defer { XCTAssertNoThrow(try server.stop().wait()) } let logger = Logger(label: "TestLogger") @@ -278,17 +278,17 @@ class LambdaTest: XCTestCase { logger.info("hello") let runner = LambdaRunner(eventLoop: eventLoopGroup.next(), configuration: configuration) - try runner.run( + try await runner.run( handler: CodableEventLoopLambdaHandler( handler: handler1, allocator: ByteBufferAllocator() ), logger: logger - ).wait() + ).get() - try runner.initialize(handlerType: CodableEventLoopLambdaHandler.self, logger: logger, terminator: LambdaTerminator()).flatMap { handler2 in + try await runner.initialize(handlerType: CodableEventLoopLambdaHandler.self, logger: logger, terminator: LambdaTerminator()).flatMap { handler2 in runner.run(handler: handler2, logger: logger) - }.wait() + }.get() } try await task.value diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index 7e41db16..3af40b1e 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -1,6 +1,6 @@ # this file is not designed to be run directly # instead, use the docker-compose.. files -# eg docker-compose -f docker/docker-compose.yaml -f docker/docker-compose.al2.55.yaml run test +# eg docker-compose -f docker/docker-compose.yaml -f docker/docker-compose.al2.57.yaml run test version: "3" services: From 0720fc404530d9d368bd783d63627109b022828c Mon Sep 17 00:00:00 2001 From: tom doron Date: Tue, 10 Jan 2023 09:47:52 -0800 Subject: [PATCH 2/2] fixup --- Sources/AWSLambdaRuntimeCore/LambdaRunner.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Sources/AWSLambdaRuntimeCore/LambdaRunner.swift b/Sources/AWSLambdaRuntimeCore/LambdaRunner.swift index 3d4f55b3..0094ed7e 100644 --- a/Sources/AWSLambdaRuntimeCore/LambdaRunner.swift +++ b/Sources/AWSLambdaRuntimeCore/LambdaRunner.swift @@ -158,3 +158,6 @@ extension Result { } } } + +/// This is safe since lambda runtime synchronizes by dispatching all methods to a single `EventLoop` +extension LambdaRunner: @unchecked Sendable {}