Skip to content

Commit

Permalink
Convert pkg/config/utils and comp/logs/agent/config to modules (#21831)
Browse files Browse the repository at this point in the history
* Move endpoints and api_key to config/setup

* Convert comp/logs/agent/config into module

* Add to modules.py

* Convert pkg/config/utils into module

* Refactor code to use pkgconfigutils

* Update tests to use suite.config instead of global config

* Add missing replaces
  • Loading branch information
liustanley authored Jan 5, 2024
1 parent 623926f commit dc72c91
Show file tree
Hide file tree
Showing 32 changed files with 1,098 additions and 219 deletions.
3 changes: 2 additions & 1 deletion comp/dogstatsd/packets/pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package packets
import (
"sync"

"github.com/DataDog/datadog-agent/pkg/config"
"github.com/DataDog/datadog-agent/pkg/config/utils"
)

Expand Down Expand Up @@ -41,7 +42,7 @@ func NewPool(bufferSize int) *Pool {
},
},
// telemetry
tlmEnabled: utils.IsTelemetryEnabled(),
tlmEnabled: utils.IsTelemetryEnabled(config.Datadog),
}
}

Expand Down
3 changes: 2 additions & 1 deletion comp/dogstatsd/server/float64_list_pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package server
import (
"sync"

"github.com/DataDog/datadog-agent/pkg/config"
"github.com/DataDog/datadog-agent/pkg/config/utils"
"github.com/DataDog/datadog-agent/pkg/telemetry"
)
Expand Down Expand Up @@ -42,7 +43,7 @@ func newFloat64ListPool() *float64ListPool {
},
},
// telemetry
tlmEnabled: utils.IsTelemetryEnabled(),
tlmEnabled: utils.IsTelemetryEnabled(config.Datadog),
}
}

Expand Down
3 changes: 2 additions & 1 deletion comp/dogstatsd/server/intern.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package server
import (
"fmt"

"github.com/DataDog/datadog-agent/pkg/config"
"github.com/DataDog/datadog-agent/pkg/config/utils"
"github.com/DataDog/datadog-agent/pkg/telemetry"
)
Expand Down Expand Up @@ -62,7 +63,7 @@ func newStringInterner(maxSize int, internerID int) *stringInterner {
id: fmt.Sprintf("interner_%d", internerID),
maxSize: maxSize,
telemetry: siTelemetry{
enabled: utils.IsTelemetryEnabled(),
enabled: utils.IsTelemetryEnabled(config.Datadog),
},
}

Expand Down
40 changes: 20 additions & 20 deletions comp/logs/agent/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ import (
"strings"
"time"

pkgConfig "github.com/DataDog/datadog-agent/pkg/config"
"github.com/DataDog/datadog-agent/pkg/config/utils"
pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model"
pkgconfigutils "github.com/DataDog/datadog-agent/pkg/config/utils"
"github.com/DataDog/datadog-agent/pkg/util/log"
"github.com/DataDog/datadog-agent/pkg/util/pointer"
)
Expand Down Expand Up @@ -61,7 +61,7 @@ var (
)

// GlobalProcessingRules returns the global processing rules to apply to all logs.
func GlobalProcessingRules(coreConfig pkgConfig.Reader) ([]*ProcessingRule, error) {
func GlobalProcessingRules(coreConfig pkgconfigmodel.Reader) ([]*ProcessingRule, error) {
var rules []*ProcessingRule
var err error
raw := coreConfig.Get("logs_config.processing_rules")
Expand Down Expand Up @@ -98,17 +98,17 @@ func HasMultiLineRule(rules []*ProcessingRule) bool {
}

// BuildEndpoints returns the endpoints to send logs.
func BuildEndpoints(coreConfig pkgConfig.Reader, httpConnectivity HTTPConnectivity, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
func BuildEndpoints(coreConfig pkgconfigmodel.Reader, httpConnectivity HTTPConnectivity, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
return BuildEndpointsWithConfig(coreConfig, defaultLogsConfigKeys(coreConfig), httpEndpointPrefix, httpConnectivity, intakeTrackType, intakeProtocol, intakeOrigin)
}

// BuildEndpointsWithVectorOverride returns the endpoints to send logs and enforce Vector override config keys
func BuildEndpointsWithVectorOverride(coreConfig pkgConfig.Reader, httpConnectivity HTTPConnectivity, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
func BuildEndpointsWithVectorOverride(coreConfig pkgconfigmodel.Reader, httpConnectivity HTTPConnectivity, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
return BuildEndpointsWithConfig(coreConfig, defaultLogsConfigKeysWithVectorOverride(coreConfig), httpEndpointPrefix, httpConnectivity, intakeTrackType, intakeProtocol, intakeOrigin)
}

// BuildEndpointsWithConfig returns the endpoints to send logs.
func BuildEndpointsWithConfig(coreConfig pkgConfig.Reader, logsConfig *LogsConfigKeys, endpointPrefix string, httpConnectivity HTTPConnectivity, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
func BuildEndpointsWithConfig(coreConfig pkgconfigmodel.Reader, logsConfig *LogsConfigKeys, endpointPrefix string, httpConnectivity HTTPConnectivity, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
if logsConfig.devModeNoSSL() {
log.Warnf("Use of illegal configuration parameter, if you need to send your logs to a proxy, "+
"please use '%s' and '%s' instead", logsConfig.getConfigKey("logs_dd_url"), logsConfig.getConfigKey("logs_no_ssl"))
Expand All @@ -124,21 +124,21 @@ func BuildEndpointsWithConfig(coreConfig pkgConfig.Reader, logsConfig *LogsConfi
}

// BuildServerlessEndpoints returns the endpoints to send logs for the Serverless agent.
func BuildServerlessEndpoints(coreConfig pkgConfig.Reader, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol) (*Endpoints, error) {
func BuildServerlessEndpoints(coreConfig pkgconfigmodel.Reader, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol) (*Endpoints, error) {
return BuildHTTPEndpointsWithConfig(coreConfig, defaultLogsConfigKeysWithVectorOverride(coreConfig), serverlessHTTPEndpointPrefix, intakeTrackType, intakeProtocol, ServerlessIntakeOrigin)
}

// ExpectedTagsDuration returns a duration of the time expected tags will be submitted for.
func ExpectedTagsDuration(coreConfig pkgConfig.Reader) time.Duration {
func ExpectedTagsDuration(coreConfig pkgconfigmodel.Reader) time.Duration {
return defaultLogsConfigKeys(coreConfig).expectedTagsDuration()
}

// IsExpectedTagsSet returns boolean showing if expected tags feature is enabled.
func IsExpectedTagsSet(coreConfig pkgConfig.Reader) bool {
func IsExpectedTagsSet(coreConfig pkgconfigmodel.Reader) bool {
return ExpectedTagsDuration(coreConfig) > 0
}

func buildTCPEndpoints(coreConfig pkgConfig.Reader, logsConfig *LogsConfigKeys) (*Endpoints, error) {
func buildTCPEndpoints(coreConfig pkgconfigmodel.Reader, logsConfig *LogsConfigKeys) (*Endpoints, error) {
useProto := logsConfig.devModeUseProto()
proxyAddress := logsConfig.socks5ProxyAddress()
main := Endpoint{
Expand Down Expand Up @@ -166,7 +166,7 @@ func buildTCPEndpoints(coreConfig pkgConfig.Reader, logsConfig *LogsConfigKeys)
} else {
// If no proxy is set, we default to 'logs_config.dd_url' if set, or to 'site'.
// if none of them is set, we default to the US agent endpoint.
main.Host = utils.GetMainEndpoint(coreConfig, tcpEndpointPrefix, logsConfig.getConfigKey("dd_url"))
main.Host = pkgconfigutils.GetMainEndpoint(coreConfig, tcpEndpointPrefix, logsConfig.getConfigKey("dd_url"))
if port, found := logsEndpoints[main.Host]; found {
main.Port = port
} else {
Expand All @@ -181,23 +181,23 @@ func buildTCPEndpoints(coreConfig pkgConfig.Reader, logsConfig *LogsConfigKeys)
additionals[i].UseSSL = main.UseSSL
}
additionals[i].ProxyAddress = proxyAddress
additionals[i].APIKey = utils.SanitizeAPIKey(additionals[i].APIKey)
additionals[i].APIKey = pkgconfigutils.SanitizeAPIKey(additionals[i].APIKey)
}
return NewEndpoints(main, additionals, useProto, false), nil
}

// BuildHTTPEndpoints returns the HTTP endpoints to send logs to.
func BuildHTTPEndpoints(coreConfig pkgConfig.Reader, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
func BuildHTTPEndpoints(coreConfig pkgconfigmodel.Reader, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
return BuildHTTPEndpointsWithConfig(coreConfig, defaultLogsConfigKeys(coreConfig), httpEndpointPrefix, intakeTrackType, intakeProtocol, intakeOrigin)
}

// BuildHTTPEndpointsWithVectorOverride returns the HTTP endpoints to send logs to.
func BuildHTTPEndpointsWithVectorOverride(coreConfig pkgConfig.Reader, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
func BuildHTTPEndpointsWithVectorOverride(coreConfig pkgconfigmodel.Reader, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
return BuildHTTPEndpointsWithConfig(coreConfig, defaultLogsConfigKeysWithVectorOverride(coreConfig), httpEndpointPrefix, intakeTrackType, intakeProtocol, intakeOrigin)
}

// BuildHTTPEndpointsWithConfig uses two arguments that instructs it how to access configuration parameters, then returns the HTTP endpoints to send logs to. This function is able to default to the 'classic' BuildHTTPEndpoints() w ldHTTPEndpointsWithConfigdefault variables logsConfigDefaultKeys and httpEndpointPrefix
func BuildHTTPEndpointsWithConfig(coreConfig pkgConfig.Reader, logsConfig *LogsConfigKeys, endpointPrefix string, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
func BuildHTTPEndpointsWithConfig(coreConfig pkgconfigmodel.Reader, logsConfig *LogsConfigKeys, endpointPrefix string, intakeTrackType IntakeTrackType, intakeProtocol IntakeProtocol, intakeOrigin IntakeOrigin) (*Endpoints, error) {
// Provide default values for legacy settings when the configuration key does not exist
defaultNoSSL := logsConfig.logsNoSSL()

Expand Down Expand Up @@ -240,7 +240,7 @@ func BuildHTTPEndpointsWithConfig(coreConfig pkgConfig.Reader, logsConfig *LogsC
main.Port = port
*main.UseSSL = useSSL
} else {
addr := utils.GetMainEndpoint(coreConfig, endpointPrefix, logsConfig.getConfigKey("dd_url"))
addr := pkgconfigutils.GetMainEndpoint(coreConfig, endpointPrefix, logsConfig.getConfigKey("dd_url"))
host, port, useSSL, err := parseAddressWithScheme(addr, logsConfig.devModeNoSSL(), parseAddressAsHost)
if err != nil {
return nil, fmt.Errorf("could not parse %s: %v", logsDDURL, err)
Expand All @@ -256,7 +256,7 @@ func BuildHTTPEndpointsWithConfig(coreConfig pkgConfig.Reader, logsConfig *LogsC
if additionals[i].UseSSL == nil {
additionals[i].UseSSL = main.UseSSL
}
additionals[i].APIKey = utils.SanitizeAPIKey(additionals[i].APIKey)
additionals[i].APIKey = pkgconfigutils.SanitizeAPIKey(additionals[i].APIKey)
additionals[i].UseCompression = main.UseCompression
additionals[i].CompressionLevel = main.CompressionLevel
additionals[i].BackoffBase = main.BackoffBase
Expand Down Expand Up @@ -346,16 +346,16 @@ func parseAddressAsHost(address string) (string, int, error) {
}

// TaggerWarmupDuration is used to configure the tag providers
func TaggerWarmupDuration(coreConfig pkgConfig.Reader) time.Duration {
func TaggerWarmupDuration(coreConfig pkgconfigmodel.Reader) time.Duration {
return defaultLogsConfigKeys(coreConfig).taggerWarmupDuration()
}

// AggregationTimeout is used when performing aggregation operations
func AggregationTimeout(coreConfig pkgConfig.Reader) time.Duration {
func AggregationTimeout(coreConfig pkgconfigmodel.Reader) time.Duration {
return defaultLogsConfigKeys(coreConfig).aggregationTimeout()
}

// MaxMessageSizeBytes is used to cap the maximum log message size in bytes
func MaxMessageSizeBytes(coreConfig pkgConfig.Reader) int {
func MaxMessageSizeBytes(coreConfig pkgconfigmodel.Reader) int {
return defaultLogsConfigKeys(coreConfig).maxMessageSizeBytes()
}
59 changes: 30 additions & 29 deletions comp/logs/agent/config/config_keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,47 +9,48 @@ import (
"encoding/json"
"time"

coreConfig "github.com/DataDog/datadog-agent/pkg/config"
configUtils "github.com/DataDog/datadog-agent/pkg/config/utils"
pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model"
pkgconfigsetup "github.com/DataDog/datadog-agent/pkg/config/setup"
pkgconfigutils "github.com/DataDog/datadog-agent/pkg/config/utils"
"github.com/DataDog/datadog-agent/pkg/util/log"
)

// LogsConfigKeys stores logs configuration keys stored in YAML configuration files
type LogsConfigKeys struct {
prefix string
vectorPrefix string
config coreConfig.Reader
config pkgconfigmodel.Reader
}

// defaultLogsConfigKeys defines the default YAML keys used to retrieve logs configuration
func defaultLogsConfigKeys(config coreConfig.Reader) *LogsConfigKeys {
func defaultLogsConfigKeys(config pkgconfigmodel.Reader) *LogsConfigKeys {
return NewLogsConfigKeys("logs_config.", config)
}

// defaultLogsConfigKeys defines the default YAML keys used to retrieve logs configuration
func defaultLogsConfigKeysWithVectorOverride(config coreConfig.Reader) *LogsConfigKeys {
func defaultLogsConfigKeysWithVectorOverride(config pkgconfigmodel.Reader) *LogsConfigKeys {
return NewLogsConfigKeysWithVector("logs_config.", "logs.", config)
}

// NewLogsConfigKeys returns a new logs configuration keys set
func NewLogsConfigKeys(configPrefix string, config coreConfig.Reader) *LogsConfigKeys {
func NewLogsConfigKeys(configPrefix string, config pkgconfigmodel.Reader) *LogsConfigKeys {
return &LogsConfigKeys{prefix: configPrefix, vectorPrefix: "", config: config}
}

// NewLogsConfigKeysWithVector returns a new logs configuration keys set with vector config keys enabled
func NewLogsConfigKeysWithVector(configPrefix, vectorPrefix string, config coreConfig.Reader) *LogsConfigKeys {
func NewLogsConfigKeysWithVector(configPrefix, vectorPrefix string, config pkgconfigmodel.Reader) *LogsConfigKeys {
return &LogsConfigKeys{prefix: configPrefix, vectorPrefix: vectorPrefix, config: config}
}

func (l *LogsConfigKeys) getConfig() coreConfig.Reader {
func (l *LogsConfigKeys) getConfig() pkgconfigmodel.Reader {
return l.config
}

func (l *LogsConfigKeys) getConfigKey(key string) string {
return l.prefix + key
}

func isSetAndNotEmpty(config coreConfig.Reader, key string) bool {
func isSetAndNotEmpty(config pkgconfigmodel.Reader, key string) bool {
return config.IsSet(key) && len(config.GetString(key)) > 0
}

Expand Down Expand Up @@ -123,9 +124,9 @@ func (l *LogsConfigKeys) hasAdditionalEndpoints() bool {
// getLogsAPIKey provides the dd api key used by the main logs agent sender.
func (l *LogsConfigKeys) getLogsAPIKey() string {
if configKey := l.getConfigKey("api_key"); l.isSetAndNotEmpty(configKey) {
return configUtils.SanitizeAPIKey(l.getConfig().GetString(configKey))
return pkgconfigutils.SanitizeAPIKey(l.getConfig().GetString(configKey))
}
return configUtils.SanitizeAPIKey(l.getConfig().GetString("api_key"))
return pkgconfigutils.SanitizeAPIKey(l.getConfig().GetString("api_key"))
}

func (l *LogsConfigKeys) connectionResetInterval() time.Duration {
Expand Down Expand Up @@ -166,8 +167,8 @@ func (l *LogsConfigKeys) batchWait() time.Duration {
key := l.getConfigKey("batch_wait")
batchWait := l.getConfig().GetInt(key)
if batchWait < 1 || 10 < batchWait {
log.Warnf("Invalid %s: %v should be in [1, 10], fallback on %v", key, batchWait, coreConfig.DefaultBatchWait)
return coreConfig.DefaultBatchWait * time.Second
log.Warnf("Invalid %s: %v should be in [1, 10], fallback on %v", key, batchWait, pkgconfigsetup.DefaultBatchWait)
return pkgconfigsetup.DefaultBatchWait * time.Second
}
return (time.Duration(batchWait) * time.Second)
}
Expand All @@ -176,8 +177,8 @@ func (l *LogsConfigKeys) batchMaxConcurrentSend() int {
key := l.getConfigKey("batch_max_concurrent_send")
batchMaxConcurrentSend := l.getConfig().GetInt(key)
if batchMaxConcurrentSend < 0 {
log.Warnf("Invalid %s: %v should be >= 0, fallback on %v", key, batchMaxConcurrentSend, coreConfig.DefaultBatchMaxConcurrentSend)
return coreConfig.DefaultBatchMaxConcurrentSend
log.Warnf("Invalid %s: %v should be >= 0, fallback on %v", key, batchMaxConcurrentSend, pkgconfigsetup.DefaultBatchMaxConcurrentSend)
return pkgconfigsetup.DefaultBatchMaxConcurrentSend
}
return batchMaxConcurrentSend
}
Expand All @@ -186,8 +187,8 @@ func (l *LogsConfigKeys) batchMaxSize() int {
key := l.getConfigKey("batch_max_size")
batchMaxSize := l.getConfig().GetInt(key)
if batchMaxSize <= 0 {
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, batchMaxSize, coreConfig.DefaultBatchMaxSize)
return coreConfig.DefaultBatchMaxSize
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, batchMaxSize, pkgconfigsetup.DefaultBatchMaxSize)
return pkgconfigsetup.DefaultBatchMaxSize
}
return batchMaxSize
}
Expand All @@ -196,8 +197,8 @@ func (l *LogsConfigKeys) batchMaxContentSize() int {
key := l.getConfigKey("batch_max_content_size")
batchMaxContentSize := l.getConfig().GetInt(key)
if batchMaxContentSize <= 0 {
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, batchMaxContentSize, coreConfig.DefaultBatchMaxContentSize)
return coreConfig.DefaultBatchMaxContentSize
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, batchMaxContentSize, pkgconfigsetup.DefaultBatchMaxContentSize)
return pkgconfigsetup.DefaultBatchMaxContentSize
}
return batchMaxContentSize
}
Expand All @@ -206,8 +207,8 @@ func (l *LogsConfigKeys) inputChanSize() int {
key := l.getConfigKey("input_chan_size")
inputChanSize := l.getConfig().GetInt(key)
if inputChanSize <= 0 {
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, inputChanSize, coreConfig.DefaultInputChanSize)
return coreConfig.DefaultInputChanSize
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, inputChanSize, pkgconfigsetup.DefaultInputChanSize)
return pkgconfigsetup.DefaultInputChanSize
}
return inputChanSize
}
Expand All @@ -216,8 +217,8 @@ func (l *LogsConfigKeys) senderBackoffFactor() float64 {
key := l.getConfigKey("sender_backoff_factor")
senderBackoffFactor := l.getConfig().GetFloat64(key)
if senderBackoffFactor < 2 {
log.Warnf("Invalid %s: %v should be >= 2, fallback on %v", key, senderBackoffFactor, coreConfig.DefaultLogsSenderBackoffFactor)
return coreConfig.DefaultLogsSenderBackoffFactor
log.Warnf("Invalid %s: %v should be >= 2, fallback on %v", key, senderBackoffFactor, pkgconfigsetup.DefaultLogsSenderBackoffFactor)
return pkgconfigsetup.DefaultLogsSenderBackoffFactor
}
return senderBackoffFactor
}
Expand All @@ -226,8 +227,8 @@ func (l *LogsConfigKeys) senderBackoffBase() float64 {
key := l.getConfigKey("sender_backoff_base")
senderBackoffBase := l.getConfig().GetFloat64(key)
if senderBackoffBase <= 0 {
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, senderBackoffBase, coreConfig.DefaultLogsSenderBackoffBase)
return coreConfig.DefaultLogsSenderBackoffBase
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, senderBackoffBase, pkgconfigsetup.DefaultLogsSenderBackoffBase)
return pkgconfigsetup.DefaultLogsSenderBackoffBase
}
return senderBackoffBase
}
Expand All @@ -236,8 +237,8 @@ func (l *LogsConfigKeys) senderBackoffMax() float64 {
key := l.getConfigKey("sender_backoff_max")
senderBackoffMax := l.getConfig().GetFloat64(key)
if senderBackoffMax <= 0 {
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, senderBackoffMax, coreConfig.DefaultLogsSenderBackoffMax)
return coreConfig.DefaultLogsSenderBackoffMax
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, senderBackoffMax, pkgconfigsetup.DefaultLogsSenderBackoffMax)
return pkgconfigsetup.DefaultLogsSenderBackoffMax
}
return senderBackoffMax
}
Expand All @@ -246,8 +247,8 @@ func (l *LogsConfigKeys) senderRecoveryInterval() int {
key := l.getConfigKey("sender_recovery_interval")
recoveryInterval := l.getConfig().GetInt(key)
if recoveryInterval <= 0 {
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, recoveryInterval, coreConfig.DefaultLogsSenderBackoffRecoveryInterval)
return coreConfig.DefaultLogsSenderBackoffRecoveryInterval
log.Warnf("Invalid %s: %v should be > 0, fallback on %v", key, recoveryInterval, pkgconfigsetup.DefaultLogsSenderBackoffRecoveryInterval)
return pkgconfigsetup.DefaultLogsSenderBackoffRecoveryInterval
}
return recoveryInterval
}
Expand Down
Loading

0 comments on commit dc72c91

Please sign in to comment.