-
Notifications
You must be signed in to change notification settings - Fork 315
Implementation of the open feature SDK in the java tracer #9885
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
🎯 Code Coverage 🔗 Commit SHA: a3c9e25 | Docs | Datadog PR Page | Was this helpful? Give us feedback! |
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 54 metrics, 11 unstable metrics. Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.56.0-SNAPSHOT~a3c9e256d7, baseline=1.56.0-SNAPSHOT~434b694acb
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.046 s) : 0, 1045875
Total [baseline] (8.658 s) : 0, 8658434
Agent [candidate] (1.054 s) : 0, 1053817
Total [candidate] (8.651 s) : 0, 8651235
section iast
Agent [baseline] (1.178 s) : 0, 1178339
Total [baseline] (9.303 s) : 0, 9303212
Agent [candidate] (1.178 s) : 0, 1177753
Total [candidate] (9.24 s) : 0, 9239617
gantt
title insecure-bank - break down per module: candidate=1.56.0-SNAPSHOT~a3c9e256d7, baseline=1.56.0-SNAPSHOT~434b694acb
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.448 ms) : 0, 1448
crashtracking [candidate] (1.463 ms) : 0, 1463
BytebuddyAgent [baseline] (703.757 ms) : 0, 703757
BytebuddyAgent [candidate] (709.279 ms) : 0, 709279
GlobalTracer [baseline] (245.688 ms) : 0, 245688
GlobalTracer [candidate] (247.443 ms) : 0, 247443
AppSec [baseline] (32.404 ms) : 0, 32404
AppSec [candidate] (32.563 ms) : 0, 32563
Debugger [baseline] (6.345 ms) : 0, 6345
Debugger [candidate] (6.472 ms) : 0, 6472
Remote Config [baseline] (704.85 µs) : 0, 705
Remote Config [candidate] (709.801 µs) : 0, 710
Telemetry [baseline] (12.767 ms) : 0, 12767
Telemetry [candidate] (11.597 ms) : 0, 11597
Flare Poller [baseline] (8.119 ms) : 0, 8119
Flare Poller [candidate] (9.462 ms) : 0, 9462
section iast
crashtracking [baseline] (1.457 ms) : 0, 1457
crashtracking [candidate] (1.448 ms) : 0, 1448
BytebuddyAgent [baseline] (827.381 ms) : 0, 827381
BytebuddyAgent [candidate] (827.382 ms) : 0, 827382
GlobalTracer [baseline] (234.271 ms) : 0, 234271
GlobalTracer [candidate] (234.535 ms) : 0, 234535
AppSec [baseline] (28.744 ms) : 0, 28744
AppSec [candidate] (26.832 ms) : 0, 26832
Debugger [baseline] (6.0 ms) : 0, 6000
Debugger [candidate] (5.932 ms) : 0, 5932
Remote Config [baseline] (603.317 µs) : 0, 603
Remote Config [candidate] (590.026 µs) : 0, 590
Telemetry [baseline] (8.337 ms) : 0, 8337
Telemetry [candidate] (8.238 ms) : 0, 8238
Flare Poller [baseline] (4.123 ms) : 0, 4123
Flare Poller [candidate] (4.094 ms) : 0, 4094
IAST [baseline] (32.693 ms) : 0, 32693
IAST [candidate] (34.053 ms) : 0, 34053
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.56.0-SNAPSHOT~a3c9e256d7, baseline=1.56.0-SNAPSHOT~434b694acb
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.047 s) : 0, 1046986
Total [baseline] (10.807 s) : 0, 10807074
Agent [candidate] (1.047 s) : 0, 1046637
Total [candidate] (10.612 s) : 0, 10611981
section appsec
Agent [baseline] (1.222 s) : 0, 1222073
Total [baseline] (10.917 s) : 0, 10916544
Agent [candidate] (1.223 s) : 0, 1222708
Total [candidate] (10.876 s) : 0, 10876402
section iast
Agent [baseline] (1.179 s) : 0, 1178646
Total [baseline] (11.188 s) : 0, 11188245
Agent [candidate] (1.177 s) : 0, 1177335
Total [candidate] (11.137 s) : 0, 11137072
section profiling
Agent [baseline] (1.192 s) : 0, 1191617
Total [baseline] (10.867 s) : 0, 10866932
Agent [candidate] (1.193 s) : 0, 1192501
Total [candidate] (10.827 s) : 0, 10827389
gantt
title petclinic - break down per module: candidate=1.56.0-SNAPSHOT~a3c9e256d7, baseline=1.56.0-SNAPSHOT~434b694acb
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.465 ms) : 0, 1465
crashtracking [candidate] (1.457 ms) : 0, 1457
BytebuddyAgent [baseline] (704.649 ms) : 0, 704649
BytebuddyAgent [candidate] (705.064 ms) : 0, 705064
GlobalTracer [baseline] (245.806 ms) : 0, 245806
GlobalTracer [candidate] (245.479 ms) : 0, 245479
AppSec [baseline] (32.414 ms) : 0, 32414
AppSec [candidate] (32.327 ms) : 0, 32327
Debugger [baseline] (6.409 ms) : 0, 6409
Debugger [candidate] (6.33 ms) : 0, 6330
Remote Config [baseline] (716.107 µs) : 0, 716
Remote Config [candidate] (702.073 µs) : 0, 702
Telemetry [baseline] (14.965 ms) : 0, 14965
Telemetry [candidate] (13.377 ms) : 0, 13377
Flare Poller [baseline] (5.861 ms) : 0, 5861
Flare Poller [candidate] (7.224 ms) : 0, 7224
section appsec
crashtracking [baseline] (1.46 ms) : 0, 1460
crashtracking [candidate] (1.45 ms) : 0, 1450
BytebuddyAgent [baseline] (728.84 ms) : 0, 728840
BytebuddyAgent [candidate] (729.682 ms) : 0, 729682
GlobalTracer [baseline] (237.248 ms) : 0, 237248
GlobalTracer [candidate] (237.504 ms) : 0, 237504
AppSec [baseline] (175.429 ms) : 0, 175429
AppSec [candidate] (175.174 ms) : 0, 175174
Debugger [baseline] (6.053 ms) : 0, 6053
Debugger [candidate] (5.956 ms) : 0, 5956
Remote Config [baseline] (654.162 µs) : 0, 654
Remote Config [candidate] (642.753 µs) : 0, 643
Telemetry [baseline] (8.589 ms) : 0, 8589
Telemetry [candidate] (8.633 ms) : 0, 8633
Flare Poller [baseline] (3.985 ms) : 0, 3985
Flare Poller [candidate] (3.953 ms) : 0, 3953
IAST [baseline] (24.955 ms) : 0, 24955
IAST [candidate] (24.829 ms) : 0, 24829
section iast
crashtracking [baseline] (1.451 ms) : 0, 1451
crashtracking [candidate] (1.446 ms) : 0, 1446
BytebuddyAgent [baseline] (827.74 ms) : 0, 827740
BytebuddyAgent [candidate] (826.709 ms) : 0, 826709
GlobalTracer [baseline] (234.738 ms) : 0, 234738
GlobalTracer [candidate] (234.394 ms) : 0, 234394
AppSec [baseline] (28.873 ms) : 0, 28873
AppSec [candidate] (28.629 ms) : 0, 28629
Debugger [baseline] (6.005 ms) : 0, 6005
Debugger [candidate] (5.986 ms) : 0, 5986
Remote Config [baseline] (595.272 µs) : 0, 595
Remote Config [candidate] (586.982 µs) : 0, 587
Telemetry [baseline] (8.36 ms) : 0, 8360
Telemetry [candidate] (8.367 ms) : 0, 8367
Flare Poller [baseline] (4.105 ms) : 0, 4105
Flare Poller [candidate] (4.181 ms) : 0, 4181
IAST [baseline] (32.057 ms) : 0, 32057
IAST [candidate] (32.322 ms) : 0, 32322
section profiling
crashtracking [baseline] (1.433 ms) : 0, 1433
crashtracking [candidate] (1.434 ms) : 0, 1434
BytebuddyAgent [baseline] (728.41 ms) : 0, 728410
BytebuddyAgent [candidate] (728.847 ms) : 0, 728847
GlobalTracer [baseline] (221.691 ms) : 0, 221691
GlobalTracer [candidate] (221.967 ms) : 0, 221967
AppSec [baseline] (32.114 ms) : 0, 32114
AppSec [candidate] (32.187 ms) : 0, 32187
Debugger [baseline] (7.433 ms) : 0, 7433
Debugger [candidate] (8.266 ms) : 0, 8266
Remote Config [baseline] (695.044 µs) : 0, 695
Remote Config [candidate] (731.409 µs) : 0, 731
Telemetry [baseline] (15.539 ms) : 0, 15539
Telemetry [candidate] (14.594 ms) : 0, 14594
Flare Poller [baseline] (4.095 ms) : 0, 4095
Flare Poller [candidate] (4.162 ms) : 0, 4162
ProfilingAgent [baseline] (110.344 ms) : 0, 110344
ProfilingAgent [candidate] (110.409 ms) : 0, 110409
Profiling [baseline] (111.006 ms) : 0, 111006
Profiling [candidate] (111.081 ms) : 0, 111081
LoadParameters
See matching parameters
SummaryFound 1 performance improvements and 2 performance regressions! Performance is the same for 9 metrics, 12 unstable metrics.
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.56.0-SNAPSHOT~a3c9e256d7, baseline=1.56.0-SNAPSHOT~434b694acb
dateFormat X
axisFormat %s
section baseline
no_agent (18.466 ms) : 18274, 18659
. : milestone, 18466,
appsec (18.67 ms) : 18479, 18861
. : milestone, 18670,
code_origins (17.68 ms) : 17508, 17852
. : milestone, 17680,
iast (17.681 ms) : 17503, 17859
. : milestone, 17681,
profiling (19.649 ms) : 19448, 19849
. : milestone, 19649,
tracing (17.772 ms) : 17593, 17950
. : milestone, 17772,
section candidate
no_agent (18.37 ms) : 18181, 18559
. : milestone, 18370,
appsec (18.665 ms) : 18475, 18855
. : milestone, 18665,
code_origins (18.585 ms) : 18399, 18772
. : milestone, 18585,
iast (17.559 ms) : 17382, 17736
. : milestone, 17559,
profiling (19.438 ms) : 19243, 19633
. : milestone, 19438,
tracing (17.571 ms) : 17399, 17744
. : milestone, 17571,
Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.56.0-SNAPSHOT~a3c9e256d7, baseline=1.56.0-SNAPSHOT~434b694acb
dateFormat X
axisFormat %s
section baseline
no_agent (1.194 ms) : 1182, 1206
. : milestone, 1194,
iast (3.336 ms) : 3288, 3383
. : milestone, 3336,
iast_FULL (5.684 ms) : 5628, 5739
. : milestone, 5684,
iast_GLOBAL (3.617 ms) : 3562, 3673
. : milestone, 3617,
profiling (2.073 ms) : 2053, 2093
. : milestone, 2073,
tracing (1.833 ms) : 1817, 1848
. : milestone, 1833,
section candidate
no_agent (1.194 ms) : 1182, 1206
. : milestone, 1194,
iast (3.203 ms) : 3162, 3245
. : milestone, 3203,
iast_FULL (5.896 ms) : 5836, 5955
. : milestone, 5896,
iast_GLOBAL (3.647 ms) : 3586, 3707
. : milestone, 3647,
profiling (2.128 ms) : 2106, 2150
. : milestone, 2128,
tracing (1.83 ms) : 1814, 1846
. : milestone, 1830,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics. Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.56.0-SNAPSHOT~a3c9e256d7, baseline=1.56.0-SNAPSHOT~434b694acb
dateFormat X
axisFormat %s
section baseline
no_agent (1.478 ms) : 1467, 1490
. : milestone, 1478,
appsec (2.476 ms) : 2425, 2527
. : milestone, 2476,
iast (2.22 ms) : 2156, 2283
. : milestone, 2220,
iast_GLOBAL (2.255 ms) : 2191, 2319
. : milestone, 2255,
profiling (2.059 ms) : 2008, 2111
. : milestone, 2059,
tracing (2.031 ms) : 1981, 2080
. : milestone, 2031,
section candidate
no_agent (1.482 ms) : 1470, 1494
. : milestone, 1482,
appsec (3.652 ms) : 3439, 3866
. : milestone, 3652,
iast (2.214 ms) : 2150, 2277
. : milestone, 2214,
iast_GLOBAL (2.255 ms) : 2192, 2319
. : milestone, 2255,
profiling (2.062 ms) : 2011, 2113
. : milestone, 2062,
tracing (2.042 ms) : 1993, 2092
. : milestone, 2042,
Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.56.0-SNAPSHOT~a3c9e256d7, baseline=1.56.0-SNAPSHOT~434b694acb
dateFormat X
axisFormat %s
section baseline
no_agent (15.074 s) : 15074000, 15074000
. : milestone, 15074000,
appsec (14.765 s) : 14765000, 14765000
. : milestone, 14765000,
iast (18.29 s) : 18290000, 18290000
. : milestone, 18290000,
iast_GLOBAL (18.037 s) : 18037000, 18037000
. : milestone, 18037000,
profiling (15.599 s) : 15599000, 15599000
. : milestone, 15599000,
tracing (14.713 s) : 14713000, 14713000
. : milestone, 14713000,
section candidate
no_agent (15.323 s) : 15323000, 15323000
. : milestone, 15323000,
appsec (14.863 s) : 14863000, 14863000
. : milestone, 14863000,
iast (18.743 s) : 18743000, 18743000
. : milestone, 18743000,
iast_GLOBAL (17.566 s) : 17566000, 17566000
. : milestone, 17566000,
profiling (15.121 s) : 15121000, 15121000
. : milestone, 15121000,
tracing (14.841 s) : 14841000, 14841000
. : milestone, 14841000,
|
PerfectSlayer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 suggestion: Should we start having dedicated API module for the other products?
Because this is does not feel like "tracing" and I would rather not having sub-modules and third party dependencies from our public tracing API.
So what about starting a :products:open-features for your public API?
Because the direction for 2.x version will be to split all products from tracing and have them own their separate API which can have 3rd party dependency and language version requirement like yours.
8325366 to
135fcbd
Compare
Hello @PerfectSlayer, thanks for the input! I did take your suggestion into account and also removed the draft status from the PR, so feel free to continue doing the review. We should also discuss the code owners from the new module (including members of the FFE team) |
AlexeyKuznetsov-DD
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
left several minor comments
...a-agent/agent-feature-flagging/src/main/java/com/datadog/featureflag/ExposureWriterImpl.java
Show resolved
Hide resolved
dd-java-agent/agent-featureflag/src/main/java/com/datadog/featureflag/ExposureWriterImpl.java
Outdated
Show resolved
Hide resolved
| java { | ||
| sourceCompatibility = JavaVersion.VERSION_1_8 | ||
| targetCompatibility = JavaVersion.VERSION_1_8 | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not 100% sure, but with latest changes in build scripts we have this as default.
@bric3 Could you confirm on this?
...moke-tests/featureflag/src/main/java/datadog/smoketest/springboot/SpringbootApplication.java
Outdated
Show resolved
Hide resolved
internal-api/src/main/java/datadog/trace/api/featureflag/exposure/Allocation.java
Outdated
Show resolved
Hide resolved
internal-api/src/main/java/datadog/trace/api/featureflag/exposure/Flag.java
Outdated
Show resolved
Hide resolved
internal-api/src/main/java/datadog/trace/api/featureflag/exposure/Subject.java
Outdated
Show resolved
Hide resolved
internal-api/src/main/java/datadog/trace/api/featureflag/exposure/Variant.java
Outdated
Show resolved
Hide resolved
...ucts/openfeature/src/main/java/datadog/trace/api/openfeature/DDFeatureFlaggingEvaluator.java
Show resolved
Hide resolved
...ucts/openfeature/src/main/java/datadog/trace/api/openfeature/DDFeatureFlaggingEvaluator.java
Show resolved
Hide resolved
7e03de2 to
738f569
Compare
0388db6 to
ca7c192
Compare
ca7c192 to
cdb4966
Compare
cdb4966 to
ea47cc8
Compare
What Does This Do
Implements the integration of the OpenFeature SDK within the Java tracer. This includes:
:dd-java-agent:agent-featureflagfor feature flag configuration and exposure submission through the EVP proxy.:products:openfeatureimplementing the OpenFeature Java provider:internal-apiexposing theFeatureFlagGatewayAPI between tracer internals and the feature flag provider.Motivation
This adds OpenFeature SDK support to the tracer so feature flag evaluations can be managed and reported consistently through the Datadog feature flagging system.
Additional Notes
The new feature can be enabled disabled via
DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLEDSmoke tests are provided as a separate PR
Contributor Checklist
type:and (comp:orinst:) labels in addition to any useful labelsclose,fixor any linking keywords when referencing an issue.Use
solvesinstead, and assign the PR milestone to the issueJira ticket: [PROJ-IDENT]
RFC