in tracer.go [165:369]
func (opts *TracerOptions) initDefaults(continueOnError bool) error {
var errs []error
failed := func(err error) bool {
if err == nil {
return false
}
errs = append(errs, err)
return true
}
requestDuration, err := initialRequestDuration()
if failed(err) {
requestDuration = defaultAPIRequestTime
}
metricsInterval, err := initialMetricsInterval()
if err != nil {
metricsInterval = defaultMetricsInterval
errs = append(errs, err)
}
requestSize, err := initialAPIRequestSize()
if err != nil {
requestSize = int(defaultAPIRequestSize)
errs = append(errs, err)
}
bufferSize, err := initialAPIBufferSize()
if err != nil {
bufferSize = int(defaultAPIBufferSize)
errs = append(errs, err)
}
metricsBufferSize, err := initialMetricsBufferSize()
if err != nil {
metricsBufferSize = int(defaultMetricsBufferSize)
errs = append(errs, err)
}
maxSpans, err := initialMaxSpans()
if failed(err) {
maxSpans = defaultMaxSpans
}
spanCompressionEnabled, err := initialSpanCompressionEnabled()
if failed(err) {
spanCompressionEnabled = defaultSpanCompressionEnabled
}
spanCompressionExactMatchMaxDuration, err := initialSpanCompressionExactMatchMaxDuration()
if failed(err) {
spanCompressionExactMatchMaxDuration = defaultSpanCompressionExactMatchMaxDuration
}
spanCompressionSameKindMaxDuration, err := initialSpanCompressionSameKindMaxDuration()
if failed(err) {
spanCompressionSameKindMaxDuration = defaultSpanCompressionSameKindMaxDuration
}
sampler, err := initialSampler()
if failed(err) {
sampler = nil
}
captureHeaders, err := initialCaptureHeaders()
if failed(err) {
captureHeaders = defaultCaptureHeaders
}
captureBody, err := initialCaptureBody()
if failed(err) {
captureBody = CaptureBodyOff
}
spanStackTraceMinDuration, err := initialSpanStackTraceMinDuration()
if failed(err) {
spanStackTraceMinDuration = defaultSpanStackTraceMinDuration
}
stackTraceLimit, err := initialStackTraceLimit()
if failed(err) {
stackTraceLimit = defaultStackTraceLimit
}
active, err := initialActive()
if failed(err) {
active = true
}
recording, err := initialRecording()
if failed(err) {
recording = true
}
centralConfigEnabled, err := initialCentralConfigEnabled()
if failed(err) {
centralConfigEnabled = true
}
breakdownMetricsEnabled, err := initialBreakdownMetricsEnabled()
if failed(err) {
breakdownMetricsEnabled = true
}
propagateLegacyHeader, err := initialUseElasticTraceparentHeader()
if failed(err) {
propagateLegacyHeader = true
}
cpuProfileInterval, cpuProfileDuration, err := initialCPUProfileIntervalDuration()
if failed(err) {
cpuProfileInterval = 0
cpuProfileDuration = 0
}
heapProfileInterval, err := initialHeapProfileInterval()
if failed(err) {
heapProfileInterval = 0
}
exitSpanMinDuration, err := initialExitSpanMinDuration()
if failed(err) {
exitSpanMinDuration = defaultExitSpanMinDuration
}
continuationStrategy, err := initContinuationStrategy()
if failed(err) {
continuationStrategy = defaultContinuationStrategy
}
if opts.ServiceName != "" {
err := validateServiceName(opts.ServiceName)
if failed(err) {
opts.ServiceName = ""
}
}
serviceName, serviceVersion, serviceEnvironment := initialService()
if opts.ServiceName == "" {
opts.ServiceName = serviceName
}
if opts.ServiceVersion == "" {
opts.ServiceVersion = serviceVersion
}
if opts.ServiceEnvironment == "" {
opts.ServiceEnvironment = serviceEnvironment
}
if opts.Transport == nil {
initialTransport, err := initialTransport(opts.ServiceName, opts.ServiceVersion)
if failed(err) {
active = false
} else {
opts.Transport = initialTransport
}
}
if len(errs) != 0 && !continueOnError {
return errs[0]
}
for _, err := range errs {
log.Printf("[apm]: %s", err)
}
opts.globalLabels = parseGlobalLabels()
opts.requestDuration = requestDuration
opts.metricsInterval = metricsInterval
opts.requestSize = requestSize
opts.bufferSize = bufferSize
opts.metricsBufferSize = metricsBufferSize
opts.maxSpans = maxSpans
opts.compressionOptions = compressionOptions{
enabled: spanCompressionEnabled,
exactMatchMaxDuration: spanCompressionExactMatchMaxDuration,
sameKindMaxDuration: spanCompressionSameKindMaxDuration,
}
opts.sampler = sampler
opts.sanitizedFieldNames = initialSanitizedFieldNames()
opts.disabledMetrics = initialDisabledMetrics()
opts.ignoreTransactionURLs = initialIgnoreTransactionURLs()
opts.breakdownMetrics = breakdownMetricsEnabled
opts.captureHeaders = captureHeaders
opts.captureBody = captureBody
opts.spanStackTraceMinDuration = spanStackTraceMinDuration
opts.stackTraceLimit = stackTraceLimit
opts.active = active
opts.recording = recording
opts.propagateLegacyHeader = propagateLegacyHeader
opts.exitSpanMinDuration = exitSpanMinDuration
opts.continuationStrategy = continuationStrategy
if centralConfigEnabled {
if cw, ok := opts.Transport.(apmconfig.Watcher); ok {
opts.configWatcher = cw
}
}
if ps, ok := opts.Transport.(profileSender); ok {
opts.profileSender = ps
opts.cpuProfileInterval = cpuProfileInterval
opts.cpuProfileDuration = cpuProfileDuration
opts.heapProfileInterval = heapProfileInterval
}
if vg, ok := opts.Transport.(majorVersionGetter); ok {
opts.versionGetter = vg
}
return nil
}