Skip to content

Commit 37e4ccb

Browse files
committed
Fix multiple env accessing for same key.
1 parent 83e124d commit 37e4ccb

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

datadog_lambda/config.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ class Config:
4949
service = _get_env("DD_SERVICE")
5050
env = _get_env("DD_ENV")
5151

52-
function_name = _get_env("AWS_LAMBDA_FUNCTION_NAME", "function")
53-
is_gov_region = _get_env("AWS_REGION", "", lambda x: x.startswith("us-gov-"))
54-
is_lambda_context = _get_env("AWS_LAMBDA_FUNCTION_NAME", None, bool)
55-
5652
cold_start_tracing = _get_env(
5753
"DD_COLD_START_TRACING", "true", as_bool, depends_on_tracing=True
5854
)
@@ -94,9 +90,28 @@ class Config:
9490
llmobs_enabled = _get_env("DD_LLMOBS_ENABLED", "false", as_bool)
9591
exception_replay_enabled = _get_env("DD_EXCEPTION_REPLAY_ENABLED", "false", as_bool)
9692

93+
is_gov_region = _get_env("AWS_REGION", "", lambda x: x.startswith("us-gov-"))
94+
9795
local_test = _get_env("DD_LOCAL_TEST", "false", as_bool)
9896
integration_test = _get_env("DD_INTEGRATION_TEST", "false", as_bool)
9997

98+
aws_lambda_function_name = _get_env("AWS_LAMBDA_FUNCTION_NAME")
99+
100+
@property
101+
def function_name(self):
102+
if not hasattr(self, "_config_function_name"):
103+
if self.aws_lambda_function_name is None:
104+
self._config_function_name = "function"
105+
else:
106+
self._config_function_name = self.aws_lambda_function_name
107+
return self._config_function_name
108+
109+
@property
110+
def is_lambda_context(self):
111+
if not hasattr(self, "_config_is_lambda_context"):
112+
self._config_is_lambda_context = bool(self.aws_lambda_function_name)
113+
return self._config_is_lambda_context
114+
100115
@property
101116
def fips_mode_enabled(self):
102117
if not hasattr(self, "_config_fips_mode_enabled"):

tests/test_config.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,24 @@ def _test_as_list(env_key, conf_key, default):
9999
("DD_SERVICE", "service", None, None),
100100
("DD_SERVICE", "service", "", ""),
101101
("DD_SERVICE", "service", "my_service", "my_service"),
102+
("AWS_LAMBDA_FUNCTION_NAME", "aws_lambda_function_name", None, None),
103+
("AWS_LAMBDA_FUNCTION_NAME", "aws_lambda_function_name", "", ""),
104+
(
105+
"AWS_LAMBDA_FUNCTION_NAME",
106+
"aws_lambda_function_name",
107+
"my_function",
108+
"my_function",
109+
),
102110
("AWS_LAMBDA_FUNCTION_NAME", "function_name", None, "function"),
103111
("AWS_LAMBDA_FUNCTION_NAME", "function_name", "", ""),
104112
("AWS_LAMBDA_FUNCTION_NAME", "function_name", "my_function", "my_function"),
113+
("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", None, False),
114+
("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", "", False),
115+
("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", "my_function", True),
105116
("AWS_REGION", "is_gov_region", None, False),
106117
("AWS_REGION", "is_gov_region", "", False),
107118
("AWS_REGION", "is_gov_region", "us-gov-1", True),
108119
("AWS_REGION", "is_gov_region", "us-est-1", False),
109-
("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", None, False),
110-
("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", "", False),
111-
("AWS_LAMBDA_FUNCTION_NAME", "is_lambda_context", "my_function", True),
112120
("DD_TRACE_EXTRACTOR", "trace_extractor", None, None),
113121
("DD_TRACE_EXTRACTOR", "trace_extractor", "", ""),
114122
("DD_TRACE_EXTRACTOR", "trace_extractor", "my_extractor", "my_extractor"),
@@ -147,6 +155,15 @@ def test_config_from_environ_depends_on_tracing(
147155
assert getattr(config, conf_key) is False
148156

149157

158+
def test_config_aws_lambda_function_name(setenv):
159+
# these config values all access the same environment variable, test to
160+
# ensure the wrong value is not cached
161+
setenv("AWS_LAMBDA_FUNCTION_NAME", "my_function")
162+
assert config.aws_lambda_function_name == "my_function"
163+
assert config.function_name == "my_function"
164+
assert config.is_lambda_context is True
165+
166+
150167
_test_fips_mode_from_environ = (
151168
(None, None, False),
152169
(None, "", False),

0 commit comments

Comments
 (0)