feat(logging): implement thread-safe logging with per-thread scope storage #1078
+1,004
−48
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.



Issue number: #1076 #1077
Summary
Changes
This pull request introduces significant improvements to concurrency handling in the Powertools Logger, ensuring thread- and invocation-safe logging in AWS Lambda environments with concurrent execution (LMI). It achieves this by refactoring scope storage to be thread-local, adding comprehensive concurrency tests, and updating dependencies for better compatibility. The most important changes are grouped below.
Concurrency and Thread Safety Improvements:
Logger's scope storage to use a thread-safeConcurrentDictionarykeyed byEnvironment.CurrentManagedThreadId, isolating log scopes per thread and preventing cross-invocation contamination in concurrent Lambda executions (Logger.Scope.cs). [1] [2]RemoveAllKeysmethod to clear only the current thread's scope, further ensuring isolation between concurrent invocations (Logger.Scope.cs).Dependency and Solution Updates:
Amazon.Lambda.Coreand related dependencies to version 2.8.0 across source and test projects for improved Lambda compatibility and feature support (Directory.Packages.props,AWS.Lambda.Powertools.Parameters.csproj,AWS.Lambda.Powertools.Tracing.csproj, test props). [1] [2] [3] [4]AWS.Lambda.Powertools.sln). [1] [2] [3]User experience
Checklist
Please leave checklist items unchecked if they do not apply to your change.
Is this a breaking change?
RFC issue number:
Checklist:
Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.