Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions pkg/config/create/new.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import (
// - "<Agent version>": enable NTM if the Agent has a version equal or higher than the given version. This acts has a
// minimum version for whitch to enable NTM, useful when using the same configuration across
// different agent versions.
// - other: Use viper
// - other: Use nodetreemodel
func NewConfig(name string, configLib string) model.BuildableConfig {
lib, ok := os.LookupEnv("DD_CONF_NODETREEMODEL")
if !ok {
Expand Down Expand Up @@ -58,13 +58,13 @@ func NewConfig(name string, configLib string) model.BuildableConfig {
if res >= 0 {
return nodetreemodel.NewNodeTreeConfig(name, "DD", strings.NewReplacer(".", "_")) // nolint: forbidigo // legit use case
}
} else {
// agentVersion.CompareTo didn't parse the value, it's something else
log.Warnf("unrecognized value for DD_CONF_NODETREEMODEL: %s", lib)
return viperconfig.NewViperConfig(name, "DD", strings.NewReplacer(".", "_")) // nolint: forbidigo // legit use case
}
// agentVersion.CompareTo didn't parse the value, it's something else
log.Warnf("unrecognized value for DD_CONF_NODETREEMODEL: %s", lib)
}
}

// default config implementation
return viperconfig.NewViperConfig(name, "DD", strings.NewReplacer(".", "_")) // nolint: forbidigo // legit use case
return nodetreemodel.NewNodeTreeConfig(name, "DD", strings.NewReplacer(".", "_")) // nolint: forbidigo // legit use case
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Fall back to viper when version threshold is unparsable

With this change, any DD_CONF_NODETREEMODEL value that fails CompareTo parsing now falls through to the new default (nodetreemodel). That means a common threshold format like 7.80 (missing patch) will enable NTM even on older agents (for example 7.75.2), which defeats the documented "enable NTM only at or above this version" rollout behavior and can turn on NTM earlier than intended in production configs.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This is intentional.

}
14 changes: 7 additions & 7 deletions pkg/config/create/new_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestCreateFromParms(t *testing.T) {
os.Unsetenv("DD_CONF_NODETREEMODEL")

m := NewConfig("test", "")
assert.Equal(t, "viper", m.GetLibType())
assert.Equal(t, "nodetreemodel", m.GetLibType())

m = NewConfig("test", "enable")
assert.Equal(t, "nodetreemodel", m.GetLibType())
Expand All @@ -34,7 +34,7 @@ func TestCreateFromParms(t *testing.T) {
assert.Equal(t, "tee", m.GetLibType())

m = NewConfig("test", "something invalid")
assert.Equal(t, "viper", m.GetLibType())
assert.Equal(t, "nodetreemodel", m.GetLibType())

defer func(orig string) {
version.AgentVersion = orig
Expand All @@ -43,7 +43,7 @@ func TestCreateFromParms(t *testing.T) {
version.AgentVersion = "7.75.2"

m = NewConfig("test", "7.75")
assert.Equal(t, "viper", m.GetLibType())
assert.Equal(t, "nodetreemodel", m.GetLibType())

m = NewConfig("test", "7.76.0")
assert.Equal(t, "viper", m.GetLibType())
Expand All @@ -70,7 +70,7 @@ func TestCreateFromEnv(t *testing.T) {
os.Unsetenv("DD_CONF_NODETREEMODEL")

m := NewConfig("test", "")
assert.Equal(t, "viper", m.GetLibType())
assert.Equal(t, "nodetreemodel", m.GetLibType())

t.Setenv("DD_CONF_NODETREEMODEL", "enable")
m = NewConfig("test", "")
Expand All @@ -86,7 +86,7 @@ func TestCreateFromEnv(t *testing.T) {

t.Setenv("DD_CONF_NODETREEMODEL", "something invalid")
m = NewConfig("test", "")
assert.Equal(t, "viper", m.GetLibType())
assert.Equal(t, "nodetreemodel", m.GetLibType())

defer func(orig string) {
version.AgentVersion = orig
Expand All @@ -96,7 +96,7 @@ func TestCreateFromEnv(t *testing.T) {

t.Setenv("DD_CONF_NODETREEMODEL", "7.75")
m = NewConfig("test", "")
assert.Equal(t, "viper", m.GetLibType())
assert.Equal(t, "nodetreemodel", m.GetLibType())

t.Setenv("DD_CONF_NODETREEMODEL", "7.76.0")
m = NewConfig("test", "")
Expand All @@ -108,7 +108,7 @@ func TestCreateFromEnv(t *testing.T) {

t.Setenv("DD_CONF_NODETREEMODEL", "7.80")
m = NewConfig("test", "")
assert.Equal(t, "viper", m.GetLibType())
assert.Equal(t, "nodetreemodel", m.GetLibType())

t.Setenv("DD_CONF_NODETREEMODEL", "6.80.0")
m = NewConfig("test", "")
Expand Down
Loading