Skip to content

Commit 3c39268

Browse files
committed
fix: Updates to AWS py3.7 runtime
1 parent f0c8edb commit 3c39268

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

sentry_sdk/integrations/aws_lambda.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,17 @@ def sentry_handle_http_request(request_handler, *args, **kwargs):
9292
return old_handle_http_request(request_handler, *args, **kwargs)
9393

9494
lambda_bootstrap.handle_http_request = sentry_handle_http_request
95+
96+
# Patch to_json to drain the queue. This should work even when the
97+
# SDK is initialized inside of the handler
98+
99+
old_to_json = lambda_bootstrap.to_json
100+
101+
def sentry_to_json(*args, **kwargs):
102+
_drain_queue()
103+
return old_to_json(*args, **kwargs)
104+
105+
lambda_bootstrap.to_json = sentry_to_json
95106
else:
96107
old_handle_event_request = lambda_bootstrap.handle_event_request
97108

@@ -105,16 +116,22 @@ def sentry_handle_event_request(
105116

106117
lambda_bootstrap.handle_event_request = sentry_handle_event_request
107118

108-
# This is the only function that is called in all Python environments
109-
# at the end of the request/response lifecycle. It is the only way to
110-
# do it in the Python 3.7 env.
111-
old_to_json = lambda_bootstrap.to_json
119+
# Patch the runtime client to drain the queue. This should work
120+
# even when the SDK is initialized inside of the handler
112121

113-
def sentry_to_json(*args, **kwargs):
114-
_drain_queue()
115-
return old_to_json(*args, **kwargs)
122+
def _wrap_post_function(f):
123+
def inner(*args, **kwargs):
124+
_drain_queue()
125+
return f(*args, **kwargs)
116126

117-
lambda_bootstrap.to_json = sentry_to_json
127+
return inner
128+
129+
lambda_bootstrap.LambdaRuntimeClient.post_invocation_result = _wrap_post_function(
130+
lambda_bootstrap.LambdaRuntimeClient.post_invocation_result
131+
)
132+
lambda_bootstrap.LambdaRuntimeClient.post_invocation_error = _wrap_post_function(
133+
lambda_bootstrap.LambdaRuntimeClient.post_invocation_error
134+
)
118135

119136

120137
def _make_request_event_processor(aws_event, aws_context):

0 commit comments

Comments
 (0)