Skip to content

Conversation

@purple4reina
Copy link
Contributor

@purple4reinapurple4reina commented May 15, 2025

What does this PR do?

Consolidate all config and (most) env var reading into a single config object.

Furthermore, the environment is now only read when it's needed. The config object will only resolve a config setting when it is accessed. Meaning, we'll be reading a ton fewer environment variables during initialization which will lead to faster cold starts.

Motivation

Tests are currently failing on #598 with a circular import error. Consolidating all config reading to a single location will make fixing that much much much easier.

Testing Guidelines

Additional Notes

Note that for all the boolean like env vars, it is now possible to set the environment value to "1" to configure for a True evaluation. The customer can then use "0" or really anything other than "true" or "1" to get a False evaluation.

Types of Changes

  • Bug fix
  • New feature
  • Breaking change
  • Misc (docs, refactoring, dependency upgrade, etc.)

Check all that apply

  • This PR's description is comprehensive
  • This PR contains breaking changes that are documented in the description
  • This PR introduces new APIs or parameters that are documented and unlikely to change in the foreseeable future
  • This PR impacts documentation, and it has been updated (or a ticket has been logged)
  • This PR's changes are covered by the automated tests
  • This PR collects user input/sensitive content into Datadog
  • This PR passes the integration tests (ask a Datadog member to run the tests)

@purple4reinapurple4reinaforce-pushed the rey.abolofia/config-object branch 7 times, most recently from fa21286 to 95cb0d6CompareMay 15, 2025 20:53
returnval.lower() =="true"orval=="1"


classConfig:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Quality Violation

Class Config should have an init method (...read more)

Ensure that a class has an __init__ method. This check is bypassed when the class is a data class (annotated with @dataclass).

View in DatadogLeave us feedbackDocumentation

@purple4reinapurple4reinaforce-pushed the rey.abolofia/config-object branch 3 times, most recently from 7d2950e to dd6b1d2CompareJune 5, 2025 18:18
# int. let's special case that here, because it's sure to happen in
# customer code.
err=d.get("error")
iferrandtype(err) ==bool:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Quality Violation

use isinstance() instead of type() (...read more)

Using type checks if an object o is exactly a given type. In contrast, isinstance checks if o is a given type, or any subclass of the given type, thus supporting inheritance. In addition,isinstance is generally faster than type.

View in DatadogLeave us feedbackDocumentation

@purple4reinapurple4reinaforce-pushed the rey.abolofia/config-object branch 5 times, most recently from 37e4ccb to 6449589CompareJune 10, 2025 19:39
@purple4reinapurple4reinaforce-pushed the rey.abolofia/config-object branch from 6449589 to 2957287CompareJune 10, 2025 19:56
end_time_ns=time.time_ns()
node.end_time_ns=end_time_ns
ifnotimport_stack: # import_stack empty, a root node has been found
globalroot_nodes
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These globals are not required because the affected objects are lists.

@purple4reinapurple4reina marked this pull request as ready for review June 10, 2025 21:11
@purple4reinapurple4reina requested review from a team as code ownersJune 10, 2025 21:11
@purple4reinapurple4reinaforce-pushed the rey.abolofia/config-object branch from f869908 to 7bc8751CompareJune 10, 2025 21:52
return [val.strip() forvalinval.split(",") ifval.strip()]


classConfig:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Quality Violation

Class Config should have an init method (...read more)

Ensure that a class has an __init__ method. This check is bypassed when the class is a data class (annotated with @dataclass).

View in DatadogLeave us feedbackDocumentation

Copy link
Contributor

@joeyzhao2018joeyzhao2018 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you for doing this.

@purple4reinapurple4reina merged commit b3cf1c2 into mainJun 11, 2025
69 checks passed
@purple4reinapurple4reina deleted the rey.abolofia/config-object branch June 11, 2025 15:37
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@purple4reina@joeyzhao2018@happynancee