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
19 changes: 4 additions & 15 deletions internal/beater/config/sampling.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (
"github.com/dustin/go-humanize"

"github.com/elastic/apm-server/internal/elasticsearch"
"github.com/elastic/apm-server/internal/logs"
"github.com/elastic/elastic-agent-libs/config"
"github.com/elastic/elastic-agent-libs/logp"
)
Expand Down Expand Up @@ -89,31 +88,21 @@ type TailSamplingPolicy struct {
}

func (c *TailSamplingConfig) Unpack(in *config.C) error {
var err error
defer func() {
if err != nil {
logger := logp.NewLogger(logs.Config)
logger.Errorf("failed to setup tail sampling: %v", err)
logger.Info("continuing with tail sampling disabled")
*c = TailSamplingConfig(defaultTailSamplingConfig())
}
}()
type tailSamplingConfig TailSamplingConfig
cfg := tailSamplingConfig(defaultTailSamplingConfig())
if err = in.Unpack(&cfg); err != nil {
err = fmt.Errorf("error unpacking config: %w", err)
return nil
if err := in.Unpack(&cfg); err != nil {
return fmt.Errorf("error unpacking sampling.tail config: %w", err)
}
limit, err := humanize.ParseBytes(cfg.StorageLimit)
if err != nil {
return err
return fmt.Errorf("error parsing storage limit: %w", err)
}
cfg.StorageLimitParsed = limit
cfg.Enabled = in.Enabled()
*c = TailSamplingConfig(cfg)
c.esConfigured = in.HasField("elasticsearch")
if validateErr := c.Validate(); validateErr != nil {
err = fmt.Errorf("invalid config: %w", validateErr)
return fmt.Errorf("invalid sampling.tail config: %w", validateErr)
}
return nil
}
Expand Down
8 changes: 4 additions & 4 deletions internal/beater/config/sampling_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ func TestSamplingPoliciesValidation(t *testing.T) {
c, err := NewConfig(config.MustNewConfigFrom(map[string]interface{}{
"sampling.tail.enabled": true,
}), nil, logptest.NewTestingLogger(t, ""))
assert.NoError(t, err)
assert.False(t, c.Sampling.Tail.Enabled)
assert.EqualError(t, err, "error processing configuration: invalid sampling.tail config: no policies specified accessing 'sampling.tail'")
assert.Nil(t, c)
})
t.Run("NoDefaultPolicies", func(t *testing.T) {
c, err := NewConfig(config.MustNewConfigFrom(map[string]interface{}{
Expand All @@ -49,7 +49,7 @@ func TestSamplingPoliciesValidation(t *testing.T) {
"sample_rate": 0.5,
}},
}), nil, logptest.NewTestingLogger(t, ""))
assert.NoError(t, err)
assert.False(t, c.Sampling.Tail.Enabled)
assert.EqualError(t, err, "error processing configuration: invalid sampling.tail config: no default (empty criteria) policy specified accessing 'sampling.tail'")
assert.Nil(t, c)
})
}
Loading