Skip to content

Commit 22dfb2d

Browse files
authored
Add new config for debugger upload interval (#8959)
Add dynamic.instrumentation.upoad.interval.seconds config parameter that takes float in seconds
1 parent 93244c3 commit 22dfb2d

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/sink/DebuggerSink.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public void start() {
7373
} else {
7474
currentLowRateFlushInterval = uploadFlushInterval;
7575
}
76+
LOGGER.debug("Scheduling low rate debugger sink flush to {}ms", currentLowRateFlushInterval);
7677
lowRateScheduled =
7778
lowRateScheduler.scheduleAtFixedRate(
7879
this::lowRateFlush, this, 0, currentLowRateFlushInterval, TimeUnit.MILLISECONDS);

dd-trace-api/src/main/java/datadog/trace/api/config/DebuggerConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public final class DebuggerConfig {
1010
"dynamic.instrumentation.upload.timeout";
1111
public static final String DYNAMIC_INSTRUMENTATION_UPLOAD_FLUSH_INTERVAL =
1212
"dynamic.instrumentation.upload.flush.interval";
13+
public static final String DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS =
14+
"dynamic.instrumentation.upload.interval.seconds";
1315
public static final String DYNAMIC_INSTRUMENTATION_UPLOAD_BATCH_SIZE =
1416
"dynamic.instrumentation.upload.batch.size";
1517
public static final String DYNAMIC_INSTRUMENTATION_MAX_PAYLOAD_SIZE =

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1678,10 +1678,19 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
16781678
dynamicInstrumentationUploadTimeout =
16791679
configProvider.getInteger(
16801680
DYNAMIC_INSTRUMENTATION_UPLOAD_TIMEOUT, DEFAULT_DYNAMIC_INSTRUMENTATION_UPLOAD_TIMEOUT);
1681-
dynamicInstrumentationUploadFlushInterval =
1682-
configProvider.getInteger(
1683-
DYNAMIC_INSTRUMENTATION_UPLOAD_FLUSH_INTERVAL,
1684-
DEFAULT_DYNAMIC_INSTRUMENTATION_UPLOAD_FLUSH_INTERVAL);
1681+
if (configProvider.isSet(DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS)) {
1682+
dynamicInstrumentationUploadFlushInterval =
1683+
(int)
1684+
(configProvider.getFloat(
1685+
DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS,
1686+
DEFAULT_DYNAMIC_INSTRUMENTATION_UPLOAD_FLUSH_INTERVAL)
1687+
* 1000);
1688+
} else {
1689+
dynamicInstrumentationUploadFlushInterval =
1690+
configProvider.getInteger(
1691+
DYNAMIC_INSTRUMENTATION_UPLOAD_FLUSH_INTERVAL,
1692+
DEFAULT_DYNAMIC_INSTRUMENTATION_UPLOAD_FLUSH_INTERVAL);
1693+
}
16851694
dynamicInstrumentationClassFileDumpEnabled =
16861695
configProvider.getBoolean(
16871696
DYNAMIC_INSTRUMENTATION_CLASSFILE_DUMP_ENABLED,

internal-api/src/test/groovy/datadog/trace/api/ConfigTest.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_PR
4040
import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_SNAPSHOT_URL
4141
import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_UPLOAD_BATCH_SIZE
4242
import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_UPLOAD_FLUSH_INTERVAL
43+
import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS
4344
import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_UPLOAD_TIMEOUT
4445
import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_VERIFY_BYTECODE
4546
import static datadog.trace.api.config.DebuggerConfig.EXCEPTION_REPLAY_ENABLED
@@ -256,7 +257,7 @@ class ConfigTest extends DDSpecification {
256257
prop.setProperty(DYNAMIC_INSTRUMENTATION_ENABLED, "true")
257258
prop.setProperty(DYNAMIC_INSTRUMENTATION_PROBE_FILE, "file location")
258259
prop.setProperty(DYNAMIC_INSTRUMENTATION_UPLOAD_TIMEOUT, "10")
259-
prop.setProperty(DYNAMIC_INSTRUMENTATION_UPLOAD_FLUSH_INTERVAL, "1000")
260+
prop.setProperty(DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS, "0.234")
260261
prop.setProperty(DYNAMIC_INSTRUMENTATION_UPLOAD_BATCH_SIZE, "200")
261262
prop.setProperty(DYNAMIC_INSTRUMENTATION_METRICS_ENABLED, "false")
262263
prop.setProperty(DYNAMIC_INSTRUMENTATION_CLASSFILE_DUMP_ENABLED, "true")
@@ -352,7 +353,7 @@ class ConfigTest extends DDSpecification {
352353
config.getFinalDebuggerSnapshotUrl() == "http://somehost:123/debugger/v1/input"
353354
config.dynamicInstrumentationProbeFile == "file location"
354355
config.dynamicInstrumentationUploadTimeout == 10
355-
config.dynamicInstrumentationUploadFlushInterval == 1000
356+
config.dynamicInstrumentationUploadFlushInterval == 234
356357
config.dynamicInstrumentationUploadBatchSize == 200
357358
config.dynamicInstrumentationMetricsEnabled == false
358359
config.dynamicInstrumentationClassFileDumpEnabled == true

0 commit comments

Comments
 (0)