Skip to content

Commit da8511d

Browse files
committed
migrate partialFlushEnabled
1 parent ad8c2c8 commit da8511d

File tree

5 files changed

+41
-31
lines changed

5 files changed

+41
-31
lines changed

ddtrace/tracer/log.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func logStartup(t *tracer) {
149149
AgentFeatures: t.config.agent,
150150
Integrations: t.config.integrations,
151151
AppSec: appsec.Enabled(),
152-
PartialFlushEnabled: t.config.partialFlushEnabled,
152+
PartialFlushEnabled: t.config.internalConfig.PartialFlushEnabled(),
153153
PartialFlushMinSpans: t.config.partialFlushMinSpans,
154154
Orchestrion: t.config.orchestrionCfg,
155155
FeatureFlags: featureFlags,

ddtrace/tracer/option.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,10 +262,6 @@ type config struct {
262262
// Value from DD_TRACE_PARTIAL_FLUSH_MIN_SPANS, default 1000.
263263
partialFlushMinSpans int
264264

265-
// partialFlushEnabled specifices whether the tracer should enable partial flushing. Value
266-
// from DD_TRACE_PARTIAL_FLUSH_ENABLED, default false.
267-
partialFlushEnabled bool
268-
269265
// statsComputationEnabled enables client-side stats computation (aka trace metrics).
270266
statsComputationEnabled bool
271267

@@ -422,7 +418,6 @@ func newConfig(opts ...StartOption) (*config, error) {
422418
c.spanTimeout = internal.DurationEnv("DD_TRACE_ABANDONED_SPAN_TIMEOUT", 10*time.Minute)
423419
}
424420
c.statsComputationEnabled = internal.BoolEnv("DD_TRACE_STATS_COMPUTATION_ENABLED", true)
425-
c.partialFlushEnabled = internal.BoolEnv("DD_TRACE_PARTIAL_FLUSH_ENABLED", false)
426421
c.partialFlushMinSpans = internal.IntEnv("DD_TRACE_PARTIAL_FLUSH_MIN_SPANS", partialFlushMinSpansDefault)
427422
if c.partialFlushMinSpans <= 0 {
428423
log.Warn("DD_TRACE_PARTIAL_FLUSH_MIN_SPANS=%d is not a valid value, setting to default %d", c.partialFlushMinSpans, partialFlushMinSpansDefault)
@@ -1277,7 +1272,7 @@ func WithDebugSpansMode(timeout time.Duration) StartOption {
12771272
// is disabled by default.
12781273
func WithPartialFlushing(numSpans int) StartOption {
12791274
return func(c *config) {
1280-
c.partialFlushEnabled = true
1275+
c.internalConfig.SetPartialFlushEnabled(true, internalconfig.OriginCode)
12811276
c.partialFlushMinSpans = numSpans
12821277
}
12831278
}

ddtrace/tracer/option_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1659,51 +1659,51 @@ func TestPartialFlushing(t *testing.T) {
16591659
t.Run("None", func(t *testing.T) {
16601660
c, err := newTestConfig()
16611661
assert.NoError(t, err)
1662-
assert.False(t, c.partialFlushEnabled)
1662+
assert.False(t, c.internalConfig.PartialFlushEnabled())
16631663
assert.Equal(t, partialFlushMinSpansDefault, c.partialFlushMinSpans)
16641664
})
16651665
t.Run("Disabled-DefaultMinSpans", func(t *testing.T) {
16661666
t.Setenv("DD_TRACE_PARTIAL_FLUSH_ENABLED", "false")
16671667
c, err := newTestConfig()
16681668
assert.NoError(t, err)
1669-
assert.False(t, c.partialFlushEnabled)
1669+
assert.False(t, c.internalConfig.PartialFlushEnabled())
16701670
assert.Equal(t, partialFlushMinSpansDefault, c.partialFlushMinSpans)
16711671
})
16721672
t.Run("Default-SetMinSpans", func(t *testing.T) {
16731673
t.Setenv("DD_TRACE_PARTIAL_FLUSH_MIN_SPANS", "10")
16741674
c, err := newTestConfig()
16751675
assert.NoError(t, err)
1676-
assert.False(t, c.partialFlushEnabled)
1676+
assert.False(t, c.internalConfig.PartialFlushEnabled())
16771677
assert.Equal(t, 10, c.partialFlushMinSpans)
16781678
})
16791679
t.Run("Enabled-DefaultMinSpans", func(t *testing.T) {
16801680
t.Setenv("DD_TRACE_PARTIAL_FLUSH_ENABLED", "true")
16811681
c, err := newTestConfig()
16821682
assert.NoError(t, err)
1683-
assert.True(t, c.partialFlushEnabled)
1683+
assert.True(t, c.internalConfig.PartialFlushEnabled())
16841684
assert.Equal(t, partialFlushMinSpansDefault, c.partialFlushMinSpans)
16851685
})
16861686
t.Run("Enabled-SetMinSpans", func(t *testing.T) {
16871687
t.Setenv("DD_TRACE_PARTIAL_FLUSH_ENABLED", "true")
16881688
t.Setenv("DD_TRACE_PARTIAL_FLUSH_MIN_SPANS", "10")
16891689
c, err := newTestConfig()
16901690
assert.NoError(t, err)
1691-
assert.True(t, c.partialFlushEnabled)
1691+
assert.True(t, c.internalConfig.PartialFlushEnabled())
16921692
assert.Equal(t, 10, c.partialFlushMinSpans)
16931693
})
16941694
t.Run("Enabled-SetMinSpansNegative", func(t *testing.T) {
16951695
t.Setenv("DD_TRACE_PARTIAL_FLUSH_ENABLED", "true")
16961696
t.Setenv("DD_TRACE_PARTIAL_FLUSH_MIN_SPANS", "-1")
16971697
c, err := newTestConfig()
16981698
assert.NoError(t, err)
1699-
assert.True(t, c.partialFlushEnabled)
1699+
assert.True(t, c.internalConfig.PartialFlushEnabled())
17001700
assert.Equal(t, partialFlushMinSpansDefault, c.partialFlushMinSpans)
17011701
})
17021702
t.Run("WithPartialFlushOption", func(t *testing.T) {
17031703
c, err := newTestConfig()
17041704
assert.NoError(t, err)
17051705
WithPartialFlushing(20)(c)
1706-
assert.True(t, c.partialFlushEnabled)
1706+
assert.True(t, c.internalConfig.PartialFlushEnabled())
17071707
assert.Equal(t, 20, c.partialFlushMinSpans)
17081708
})
17091709
}

ddtrace/tracer/tracer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ func (t *tracer) TracerConf() TracerConf {
974974
CanDropP0s: t.config.canDropP0s(),
975975
DebugAbandonedSpans: t.config.debugAbandonedSpans,
976976
Disabled: !t.config.enabled.current,
977-
PartialFlush: t.config.partialFlushEnabled,
977+
PartialFlush: t.config.internalConfig.PartialFlushEnabled(),
978978
PartialFlushMinSpans: t.config.partialFlushMinSpans,
979979
PeerServiceDefaults: t.config.peerServiceDefaultsEnabled,
980980
PeerServiceMappings: t.config.peerServiceMappings,

internal/config/config.go

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,24 @@ type Config struct {
4242
agentURL *url.URL
4343
debug bool
4444
// logStartup, when true, causes various startup info to be written when the tracer starts.
45-
logStartup bool
46-
serviceName string
47-
version string
48-
env string
49-
serviceMappings map[string]string
50-
hostname string
51-
runtimeMetrics bool
52-
runtimeMetricsV2 bool
53-
profilerHotspots bool
54-
profilerEndpoints bool
55-
spanAttributeSchemaVersion int
56-
peerServiceDefaultsEnabled bool
57-
peerServiceMappings map[string]string
58-
debugAbandonedSpans bool
59-
spanTimeout time.Duration
60-
partialFlushMinSpans int
45+
logStartup bool
46+
serviceName string
47+
version string
48+
env string
49+
serviceMappings map[string]string
50+
hostname string
51+
runtimeMetrics bool
52+
runtimeMetricsV2 bool
53+
profilerHotspots bool
54+
profilerEndpoints bool
55+
spanAttributeSchemaVersion int
56+
peerServiceDefaultsEnabled bool
57+
peerServiceMappings map[string]string
58+
debugAbandonedSpans bool
59+
spanTimeout time.Duration
60+
partialFlushMinSpans int
61+
// partialFlushEnabled specifices whether the tracer should enable partial flushing. Value
62+
// from DD_TRACE_PARTIAL_FLUSH_ENABLED, default false.
6163
partialFlushEnabled bool
6264
statsComputationEnabled bool
6365
dataStreamsMonitoringEnabled bool
@@ -284,3 +286,16 @@ func (c *Config) SetTraceRateLimitPerSecond(rate float64, origin telemetry.Origi
284286
c.traceRateLimitPerSecond = rate
285287
telemetry.RegisterAppConfig("DD_TRACE_RATE_LIMIT", rate, origin)
286288
}
289+
290+
func (c *Config) PartialFlushEnabled() bool {
291+
c.mu.RLock()
292+
defer c.mu.RUnlock()
293+
return c.partialFlushEnabled
294+
}
295+
296+
func (c *Config) SetPartialFlushEnabled(enabled bool, origin telemetry.Origin) {
297+
c.mu.Lock()
298+
defer c.mu.Unlock()
299+
c.partialFlushEnabled = enabled
300+
telemetry.RegisterAppConfig("DD_TRACE_PARTIAL_FLUSH_ENABLED", enabled, origin)
301+
}

0 commit comments

Comments
 (0)