Skip to content

Commit 9fadc4a

Browse files
committed
Move Lifecycle completely into EventLoop
1 parent 1854ece commit 9fadc4a

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

Sources/AWSLambdaRuntimeCore/Lambda.swift

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,27 @@ public enum Lambda {
106106
Backtrace.install()
107107
var logger = Logger(label: "Lambda")
108108
logger.logLevel = configuration.general.logLevel
109-
let lifecycle = Lifecycle(eventLoop: eventLoopGroup.next(), logger: logger, configuration: configuration, factory: factory)
110-
let signalSource = trap(signal: configuration.lifecycle.stopSignal) { signal in
111-
logger.info("intercepted signal: \(signal)")
112-
lifecycle.shutdown()
113-
}
114-
return lifecycle.start().flatMap {
115-
return lifecycle.shutdownFuture.always { _ in
116-
signalSource.cancel()
109+
let eventLoop = eventLoopGroup.next()
110+
111+
return eventLoop.flatSubmit {
112+
let lifecycle = Lifecycle(eventLoop: eventLoopGroup.next(), logger: logger, configuration: configuration, factory: factory)
113+
114+
#if DEBUG
115+
// We only offer coordinated shutdown in DEBUG, since Lambda functions
116+
// running on AWS are not shutdown in a coordinated way.
117+
let signalSource = trap(signal: configuration.lifecycle.stopSignal) { signal in
118+
logger.info("intercepted signal: \(signal)")
119+
lifecycle.shutdown()
120+
}
121+
#endif
122+
123+
return lifecycle.start().flatMap {
124+
let future = lifecycle.shutdownFuture
125+
#if DEBUG
126+
return future.always { _ in signalSource.cancel() }
127+
#else
128+
return future
129+
#endif
117130
}
118131
}
119132
}

0 commit comments

Comments
 (0)