Skip to content

Commit 99f3476

Browse files
committed
feat: return an error if tbs config fails
failure to process the tbs config will log a message and silently fallback to the default config with tbs disabled. This is not ideal and doesn't match the behaviour of other configs which return an error to the caller. Update the tbs config logic to return an error if processing fails Update test to assert error on malformed configs
1 parent 442ec6c commit 99f3476

File tree

2 files changed

+8
-19
lines changed

2 files changed

+8
-19
lines changed

internal/beater/config/sampling.go

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"github.com/dustin/go-humanize"
2626

2727
"github.com/elastic/apm-server/internal/elasticsearch"
28-
"github.com/elastic/apm-server/internal/logs"
2928
"github.com/elastic/elastic-agent-libs/config"
3029
"github.com/elastic/elastic-agent-libs/logp"
3130
)
@@ -89,31 +88,21 @@ type TailSamplingPolicy struct {
8988
}
9089

9190
func (c *TailSamplingConfig) Unpack(in *config.C) error {
92-
var err error
93-
defer func() {
94-
if err != nil {
95-
logger := logp.NewLogger(logs.Config)
96-
logger.Errorf("failed to setup tail sampling: %v", err)
97-
logger.Info("continuing with tail sampling disabled")
98-
*c = TailSamplingConfig(defaultTailSamplingConfig())
99-
}
100-
}()
10191
type tailSamplingConfig TailSamplingConfig
10292
cfg := tailSamplingConfig(defaultTailSamplingConfig())
103-
if err = in.Unpack(&cfg); err != nil {
104-
err = fmt.Errorf("error unpacking config: %w", err)
105-
return nil
93+
if err := in.Unpack(&cfg); err != nil {
94+
return fmt.Errorf("error unpacking sampling.tail config: %w", err)
10695
}
10796
limit, err := humanize.ParseBytes(cfg.StorageLimit)
10897
if err != nil {
109-
return err
98+
return fmt.Errorf("error parsing storage limit: %w", err)
11099
}
111100
cfg.StorageLimitParsed = limit
112101
cfg.Enabled = in.Enabled()
113102
*c = TailSamplingConfig(cfg)
114103
c.esConfigured = in.HasField("elasticsearch")
115104
if validateErr := c.Validate(); validateErr != nil {
116-
err = fmt.Errorf("invalid config: %w", validateErr)
105+
return fmt.Errorf("invalid sampling.tail config: %w", validateErr)
117106
}
118107
return nil
119108
}

internal/beater/config/sampling_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ func TestSamplingPoliciesValidation(t *testing.T) {
3939
c, err := NewConfig(config.MustNewConfigFrom(map[string]interface{}{
4040
"sampling.tail.enabled": true,
4141
}), nil, logptest.NewTestingLogger(t, ""))
42-
assert.NoError(t, err)
43-
assert.False(t, c.Sampling.Tail.Enabled)
42+
assert.Error(t, err)
43+
assert.Nil(t, c)
4444
})
4545
t.Run("NoDefaultPolicies", func(t *testing.T) {
4646
c, err := NewConfig(config.MustNewConfigFrom(map[string]interface{}{
@@ -49,7 +49,7 @@ func TestSamplingPoliciesValidation(t *testing.T) {
4949
"sample_rate": 0.5,
5050
}},
5151
}), nil, logptest.NewTestingLogger(t, ""))
52-
assert.NoError(t, err)
53-
assert.False(t, c.Sampling.Tail.Enabled)
52+
assert.Error(t, err)
53+
assert.Nil(t, c)
5454
})
5555
}

0 commit comments

Comments
 (0)