Skip to content

Add Sofa RPC instrumentation (Bolt, H2C, REST, Triple)#11135

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 10 commits intomasterfrom
vzakharov/sofa-rpc
Apr 23, 2026
Merged

Add Sofa RPC instrumentation (Bolt, H2C, REST, Triple)#11135
gh-worker-dd-mergequeue-cf854d[bot] merged 10 commits intomasterfrom
vzakharov/sofa-rpc

Conversation

@ValentinZakharov
Copy link
Copy Markdown
Contributor

What Does This Do

Adds auto-instrumentation for Sofa RPC, a high-perfomance RPC framework. Produces sofarpc.request client and server spans with distributed trace propagation for all four supported transports: Bolt, H2C, REST and Triple(gRPC)

Motivation

Sofa RPC is widely used in Ant Financial's ecosystem and it's not covered by any existing dd-trace-java integration. WIthout this instrumentaiton, traces break at the service boundary - downstream PRC calls are unlinked from traces

Additional Notes

Module structure

A single module sofarpc-5.0 covers all protocols and all public version of sofa-rpc. The framework was open-sources at 5.0.0; no earlier versions exists in public repositories

How server spans are coordinated

ProviderProxyInvoker.invoke() is a single entry point for all protocols on the server side - but it has noo info about the transport delivered the request. Transport specific instrumentations write the protocol name into ThreadLocal (SofaRpcProtocolContext) before invoke() is called.
ProviderProxuInvokerInstrumentaiton reads it to created the span and tag with the protocol. If the ThreadLocal is empty (uninstrumented transport), no span is created.

Trace propagation by protocol

Bolt and H2C - context travels inside SofaRequest.requestProps (the framework's own key-value bag)
image

REST - SofaRequest.requestProps is not serialized as HTTP headers by the REST transport. Context instead travels as standard HTTP headers, injected and extracted by HTTP layer (Apache HttpClient on the client side, Netty on the server side). The RestServerHandlerInstumentation sets the protocol context so that ProviderProxyInvoketInstrumentation activated and creates a sofarpc.request[server] span that naturally attaches to the active netty.request` span
image

Triple - uses gRPC unses the hood. The grpc-1.5 instrumentation handles trace propagation via gRPC Metadata. The TripleServerInstrumentation sets protocol="tri" so that ProviderProxyInvokerInstrumentaiton creates a sofarpc.request[server] span with child of the active grpc.serverspan
image

Span attributes

Tag Value
sofarpc.protocol bolt / h2c / rest / tri
rpc.system sofarpc
rpc.service e.g. com.example.HelloServier:1.0
rpc.method e.g. sayHello
span.kind client / server
component sofarpc-client / sofarpc-server
peer.service derived from rpc.servier

Resource name format: {rpc.service}/{rpc.method} (e.g. com.example.HelloService:1.0/sayHello)

Known limitations

  • REST server: SofaRequest.getTaargetServiceUniqueName() returns null on the server side - the service name is not propagated thought the JAX-RS layer.
  • H2C: `getTargetServiceUniquieName() does not include the version suffix (e.g. HelloService/sayHello). THis is Sofa RPC behaviour for the H2C transport

Contributor Checklist

Jira ticket: [PROJ-IDENT]

Note: Once your PR is ready to merge, add it to the merge queue by commenting /merge. /merge -c cancels the queue request. /merge -f --reason "reason" skips all merge queue checks; please use this judiciously, as some checks do not run at the PR-level. For more information, see this doc.

@ValentinZakharov ValentinZakharov self-assigned this Apr 16, 2026
@ValentinZakharov ValentinZakharov requested a review from a team as a code owner April 16, 2026 12:18
@ValentinZakharov ValentinZakharov requested a review from a team as a code owner April 16, 2026 12:18
@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Apr 16, 2026

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master vzakharov/sofa-rpc
git_commit_date 1776344001 1776925732
git_commit_sha 95de525 17ebcd0
release_version 1.62.0-SNAPSHOT~95de525c87 1.62.0-SNAPSHOT~17ebcd0a24
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1776928053 1776928053
ci_job_id 1622685281 1622685281
ci_pipeline_id 109217367 109217367
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-fffdjqve 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-fffdjqve 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 60 metrics, 11 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.62.0-SNAPSHOT~17ebcd0a24, baseline=1.62.0-SNAPSHOT~95de525c87

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.076 s) : 0, 1075865
Total [baseline] (11.105 s) : 0, 11104682
Agent [candidate] (1.063 s) : 0, 1063086
Total [candidate] (11.078 s) : 0, 11077775
section appsec
Agent [baseline] (1.249 s) : 0, 1249264
Total [baseline] (11.016 s) : 0, 11016234
Agent [candidate] (1.261 s) : 0, 1261220
Total [candidate] (11.142 s) : 0, 11141579
section iast
Agent [baseline] (1.235 s) : 0, 1234725
Total [baseline] (11.356 s) : 0, 11355815
Agent [candidate] (1.223 s) : 0, 1223385
Total [candidate] (11.363 s) : 0, 11363001
section profiling
Agent [baseline] (1.186 s) : 0, 1185869
Total [baseline] (11.116 s) : 0, 11115524
Agent [candidate] (1.185 s) : 0, 1184668
Total [candidate] (11.058 s) : 0, 11058045
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.076 s -
Agent appsec 1.249 s 173.399 ms (16.1%)
Agent iast 1.235 s 158.859 ms (14.8%)
Agent profiling 1.186 s 110.003 ms (10.2%)
Total tracing 11.105 s -
Total appsec 11.016 s -88.447 ms (-0.8%)
Total iast 11.356 s 251.133 ms (2.3%)
Total profiling 11.116 s 10.843 ms (0.1%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.063 s -
Agent appsec 1.261 s 198.134 ms (18.6%)
Agent iast 1.223 s 160.298 ms (15.1%)
Agent profiling 1.185 s 121.582 ms (11.4%)
Total tracing 11.078 s -
Total appsec 11.142 s 63.804 ms (0.6%)
Total iast 11.363 s 285.226 ms (2.6%)
Total profiling 11.058 s -19.73 ms (-0.2%)
gantt
    title petclinic - break down per module: candidate=1.62.0-SNAPSHOT~17ebcd0a24, baseline=1.62.0-SNAPSHOT~95de525c87

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.26 ms) : 0, 1260
crashtracking [candidate] (1.223 ms) : 0, 1223
BytebuddyAgent [baseline] (645.735 ms) : 0, 645735
BytebuddyAgent [candidate] (637.925 ms) : 0, 637925
AgentMeter [baseline] (29.825 ms) : 0, 29825
AgentMeter [candidate] (29.467 ms) : 0, 29467
GlobalTracer [baseline] (250.663 ms) : 0, 250663
GlobalTracer [candidate] (250.463 ms) : 0, 250463
AppSec [baseline] (32.791 ms) : 0, 32791
AppSec [candidate] (32.599 ms) : 0, 32599
Debugger [baseline] (60.609 ms) : 0, 60609
Debugger [candidate] (59.792 ms) : 0, 59792
Remote Config [baseline] (602.344 µs) : 0, 602
Remote Config [candidate] (590.203 µs) : 0, 590
Telemetry [baseline] (8.161 ms) : 0, 8161
Telemetry [candidate] (8.032 ms) : 0, 8032
Flare Poller [baseline] (9.819 ms) : 0, 9819
Flare Poller [candidate] (6.716 ms) : 0, 6716
section appsec
crashtracking [baseline] (1.231 ms) : 0, 1231
crashtracking [candidate] (1.236 ms) : 0, 1236
BytebuddyAgent [baseline] (662.909 ms) : 0, 662909
BytebuddyAgent [candidate] (671.444 ms) : 0, 671444
AgentMeter [baseline] (12.054 ms) : 0, 12054
AgentMeter [candidate] (12.125 ms) : 0, 12125
GlobalTracer [baseline] (248.928 ms) : 0, 248928
GlobalTracer [candidate] (250.128 ms) : 0, 250128
IAST [baseline] (24.421 ms) : 0, 24421
IAST [candidate] (24.689 ms) : 0, 24689
AppSec [baseline] (184.866 ms) : 0, 184866
AppSec [candidate] (186.036 ms) : 0, 186036
Debugger [baseline] (65.914 ms) : 0, 65914
Debugger [candidate] (66.351 ms) : 0, 66351
Remote Config [baseline] (613.821 µs) : 0, 614
Remote Config [candidate] (616.572 µs) : 0, 617
Telemetry [baseline] (8.365 ms) : 0, 8365
Telemetry [candidate] (8.47 ms) : 0, 8470
Flare Poller [baseline] (3.521 ms) : 0, 3521
Flare Poller [candidate] (3.529 ms) : 0, 3529
section iast
crashtracking [baseline] (1.231 ms) : 0, 1231
crashtracking [candidate] (1.214 ms) : 0, 1214
BytebuddyAgent [baseline] (808.463 ms) : 0, 808463
BytebuddyAgent [candidate] (801.207 ms) : 0, 801207
AgentMeter [baseline] (11.473 ms) : 0, 11473
AgentMeter [candidate] (11.487 ms) : 0, 11487
GlobalTracer [baseline] (240.411 ms) : 0, 240411
GlobalTracer [candidate] (238.286 ms) : 0, 238286
IAST [baseline] (26.118 ms) : 0, 26118
IAST [candidate] (25.665 ms) : 0, 25665
AppSec [baseline] (33.301 ms) : 0, 33301
AppSec [candidate] (30.973 ms) : 0, 30973
Debugger [baseline] (60.849 ms) : 0, 60849
Debugger [candidate] (65.181 ms) : 0, 65181
Remote Config [baseline] (562.246 µs) : 0, 562
Remote Config [candidate] (547.498 µs) : 0, 547
Telemetry [baseline] (12.561 ms) : 0, 12561
Telemetry [candidate] (9.341 ms) : 0, 9341
Flare Poller [baseline] (3.472 ms) : 0, 3472
Flare Poller [candidate] (3.459 ms) : 0, 3459
section profiling
crashtracking [baseline] (1.172 ms) : 0, 1172
crashtracking [candidate] (1.187 ms) : 0, 1187
BytebuddyAgent [baseline] (692.644 ms) : 0, 692644
BytebuddyAgent [candidate] (692.136 ms) : 0, 692136
AgentMeter [baseline] (9.161 ms) : 0, 9161
AgentMeter [candidate] (8.958 ms) : 0, 8958
GlobalTracer [baseline] (207.193 ms) : 0, 207193
GlobalTracer [candidate] (206.351 ms) : 0, 206351
AppSec [baseline] (32.791 ms) : 0, 32791
AppSec [candidate] (32.743 ms) : 0, 32743
Debugger [baseline] (65.853 ms) : 0, 65853
Debugger [candidate] (65.417 ms) : 0, 65417
Remote Config [baseline] (578.107 µs) : 0, 578
Remote Config [candidate] (567.718 µs) : 0, 568
Telemetry [baseline] (7.805 ms) : 0, 7805
Telemetry [candidate] (7.783 ms) : 0, 7783
Flare Poller [baseline] (3.556 ms) : 0, 3556
Flare Poller [candidate] (3.536 ms) : 0, 3536
ProfilingAgent [baseline] (93.932 ms) : 0, 93932
ProfilingAgent [candidate] (94.561 ms) : 0, 94561
Profiling [baseline] (94.512 ms) : 0, 94512
Profiling [candidate] (95.126 ms) : 0, 95126
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.62.0-SNAPSHOT~17ebcd0a24, baseline=1.62.0-SNAPSHOT~95de525c87

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.06 s) : 0, 1060468
Total [baseline] (8.869 s) : 0, 8868880
Agent [candidate] (1.059 s) : 0, 1059166
Total [candidate] (8.859 s) : 0, 8859134
section iast
Agent [baseline] (1.223 s) : 0, 1223247
Total [baseline] (9.558 s) : 0, 9558334
Agent [candidate] (1.22 s) : 0, 1219750
Total [candidate] (9.587 s) : 0, 9586591
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.06 s -
Agent iast 1.223 s 162.779 ms (15.3%)
Total tracing 8.869 s -
Total iast 9.558 s 689.454 ms (7.8%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.059 s -
Agent iast 1.22 s 160.584 ms (15.2%)
Total tracing 8.859 s -
Total iast 9.587 s 727.457 ms (8.2%)
gantt
    title insecure-bank - break down per module: candidate=1.62.0-SNAPSHOT~17ebcd0a24, baseline=1.62.0-SNAPSHOT~95de525c87

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.233 ms) : 0, 1233
crashtracking [candidate] (1.248 ms) : 0, 1248
BytebuddyAgent [baseline] (633.781 ms) : 0, 633781
BytebuddyAgent [candidate] (636.972 ms) : 0, 636972
AgentMeter [baseline] (29.635 ms) : 0, 29635
AgentMeter [candidate] (29.508 ms) : 0, 29508
GlobalTracer [baseline] (250.066 ms) : 0, 250066
GlobalTracer [candidate] (249.74 ms) : 0, 249740
AppSec [baseline] (32.715 ms) : 0, 32715
AppSec [candidate] (32.446 ms) : 0, 32446
Debugger [baseline] (59.804 ms) : 0, 59804
Debugger [candidate] (59.189 ms) : 0, 59189
Remote Config [baseline] (608.599 µs) : 0, 609
Remote Config [candidate] (600.769 µs) : 0, 601
Telemetry [baseline] (8.156 ms) : 0, 8156
Telemetry [candidate] (9.706 ms) : 0, 9706
Flare Poller [baseline] (8.328 ms) : 0, 8328
Flare Poller [candidate] (3.538 ms) : 0, 3538
section iast
crashtracking [baseline] (1.224 ms) : 0, 1224
crashtracking [candidate] (1.219 ms) : 0, 1219
BytebuddyAgent [baseline] (800.98 ms) : 0, 800980
BytebuddyAgent [candidate] (799.129 ms) : 0, 799129
AgentMeter [baseline] (11.411 ms) : 0, 11411
AgentMeter [candidate] (11.381 ms) : 0, 11381
GlobalTracer [baseline] (238.935 ms) : 0, 238935
GlobalTracer [candidate] (237.744 ms) : 0, 237744
AppSec [baseline] (33.76 ms) : 0, 33760
AppSec [candidate] (29.614 ms) : 0, 29614
Debugger [baseline] (59.405 ms) : 0, 59405
Debugger [candidate] (65.223 ms) : 0, 65223
Remote Config [baseline] (542.653 µs) : 0, 543
Remote Config [candidate] (1.152 ms) : 0, 1152
Telemetry [baseline] (11.736 ms) : 0, 11736
Telemetry [candidate] (9.261 ms) : 0, 9261
Flare Poller [baseline] (3.39 ms) : 0, 3390
Flare Poller [candidate] (3.359 ms) : 0, 3359
IAST [baseline] (25.737 ms) : 0, 25737
IAST [candidate] (25.669 ms) : 0, 25669
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master vzakharov/sofa-rpc
git_commit_date 1776344001 1776925732
git_commit_sha 95de525 17ebcd0
release_version 1.62.0-SNAPSHOT~95de525c87 1.62.0-SNAPSHOT~17ebcd0a24
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1776928479 1776928479
ci_job_id 1622685282 1622685282
ci_pipeline_id 109217367 109217367
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-1-zqzvocao 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-1-zqzvocao 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 0 performance improvements and 2 performance regressions! Performance is the same for 19 metrics, 15 unstable metrics.

scenario Δ mean agg_http_req_duration_p50 Δ mean agg_http_req_duration_p95 Δ mean throughput candidate mean agg_http_req_duration_p50 candidate mean agg_http_req_duration_p95 candidate mean throughput baseline mean agg_http_req_duration_p50 baseline mean agg_http_req_duration_p95 baseline mean throughput
scenario:load:petclinic:no_agent:high_load worse
[+0.362ms; +1.845ms] or [+2.149%; +10.944%]
unstable
[+0.020ms; +3.257ms] or [+0.072%; +11.423%]
unstable
[-42.678op/s; +14.240op/s] or [-15.830%; +5.282%]
17.966ms 30.147ms 255.375op/s 16.863ms 28.508ms 269.594op/s
scenario:load:petclinic:profiling:high_load worse
[+0.547ms; +1.662ms] or [+3.037%; +9.236%]
same
[-119.131µs; +1793.467µs] or [-0.404%; +6.082%]
unstable
[-36.461op/s; +12.086op/s] or [-14.396%; +4.772%]
19.102ms 30.325ms 241.094op/s 17.998ms 29.488ms 253.281op/s
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~17ebcd0a24, baseline=1.62.0-SNAPSHOT~95de525c87
    dateFormat X
    axisFormat %s
section baseline
no_agent (17.3 ms) : 17129, 17471
.   : milestone, 17300,
appsec (18.958 ms) : 18766, 19150
.   : milestone, 18958,
code_origins (17.952 ms) : 17778, 18126
.   : milestone, 17952,
iast (18.146 ms) : 17965, 18328
.   : milestone, 18146,
profiling (18.425 ms) : 18240, 18609
.   : milestone, 18425,
tracing (17.761 ms) : 17589, 17934
.   : milestone, 17761,
section candidate
no_agent (18.272 ms) : 18086, 18459
.   : milestone, 18272,
appsec (18.858 ms) : 18669, 19048
.   : milestone, 18858,
code_origins (17.978 ms) : 17800, 18157
.   : milestone, 17978,
iast (17.809 ms) : 17632, 17985
.   : milestone, 17809,
profiling (19.357 ms) : 19165, 19549
.   : milestone, 19357,
tracing (17.635 ms) : 17461, 17810
.   : milestone, 17635,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 17.3 ms [17.129 ms, 17.471 ms] -
appsec 18.958 ms [18.766 ms, 19.15 ms] 1.659 ms (9.6%)
code_origins 17.952 ms [17.778 ms, 18.126 ms] 652.639 µs (3.8%)
iast 18.146 ms [17.965 ms, 18.328 ms] 846.937 µs (4.9%)
profiling 18.425 ms [18.24 ms, 18.609 ms] 1.125 ms (6.5%)
tracing 17.761 ms [17.589 ms, 17.934 ms] 461.722 µs (2.7%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.272 ms [18.086 ms, 18.459 ms] -
appsec 18.858 ms [18.669 ms, 19.048 ms] 586.254 µs (3.2%)
code_origins 17.978 ms [17.8 ms, 18.157 ms] -293.727 µs (-1.6%)
iast 17.809 ms [17.632 ms, 17.985 ms] -463.334 µs (-2.5%)
profiling 19.357 ms [19.165 ms, 19.549 ms] 1.085 ms (5.9%)
tracing 17.635 ms [17.461 ms, 17.81 ms] -636.939 µs (-3.5%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~17ebcd0a24, baseline=1.62.0-SNAPSHOT~95de525c87
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.25 ms) : 1237, 1263
.   : milestone, 1250,
iast (3.295 ms) : 3250, 3339
.   : milestone, 3295,
iast_FULL (5.917 ms) : 5857, 5977
.   : milestone, 5917,
iast_GLOBAL (3.723 ms) : 3661, 3785
.   : milestone, 3723,
profiling (2.048 ms) : 2030, 2066
.   : milestone, 2048,
tracing (1.874 ms) : 1858, 1890
.   : milestone, 1874,
section candidate
no_agent (1.247 ms) : 1235, 1260
.   : milestone, 1247,
iast (3.229 ms) : 3183, 3275
.   : milestone, 3229,
iast_FULL (5.859 ms) : 5800, 5917
.   : milestone, 5859,
iast_GLOBAL (3.726 ms) : 3669, 3782
.   : milestone, 3726,
profiling (2.173 ms) : 2152, 2194
.   : milestone, 2173,
tracing (1.826 ms) : 1811, 1841
.   : milestone, 1826,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.25 ms [1.237 ms, 1.263 ms] -
iast 3.295 ms [3.25 ms, 3.339 ms] 2.045 ms (163.6%)
iast_FULL 5.917 ms [5.857 ms, 5.977 ms] 4.667 ms (373.4%)
iast_GLOBAL 3.723 ms [3.661 ms, 3.785 ms] 2.473 ms (197.8%)
profiling 2.048 ms [2.03 ms, 2.066 ms] 798.217 µs (63.9%)
tracing 1.874 ms [1.858 ms, 1.89 ms] 624.193 µs (49.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.247 ms [1.235 ms, 1.26 ms] -
iast 3.229 ms [3.183 ms, 3.275 ms] 1.982 ms (158.9%)
iast_FULL 5.859 ms [5.8 ms, 5.917 ms] 4.611 ms (369.7%)
iast_GLOBAL 3.726 ms [3.669 ms, 3.782 ms] 2.479 ms (198.7%)
profiling 2.173 ms [2.152 ms, 2.194 ms] 925.963 µs (74.2%)
tracing 1.826 ms [1.811 ms, 1.841 ms] 578.553 µs (46.4%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master vzakharov/sofa-rpc
git_commit_date 1776344001 1776925732
git_commit_sha 95de525 17ebcd0
release_version 1.62.0-SNAPSHOT~95de525c87 1.62.0-SNAPSHOT~17ebcd0a24
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1776928267 1776928267
ci_job_id 1622685283 1622685283
ci_pipeline_id 109217367 109217367
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-2-t1d2y95m 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-2-t1d2y95m 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 1 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 0 unstable metrics.

scenario Δ mean execution_time candidate mean execution_time baseline mean execution_time
scenario:dacapo:tomcat:appsec better
[-1.480ms; -1.128ms] or [-38.232%; -29.135%]
2.568ms 3.872ms
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~17ebcd0a24, baseline=1.62.0-SNAPSHOT~95de525c87
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.548 s) : 15548000, 15548000
.   : milestone, 15548000,
appsec (14.499 s) : 14499000, 14499000
.   : milestone, 14499000,
iast (18.065 s) : 18065000, 18065000
.   : milestone, 18065000,
iast_GLOBAL (17.9 s) : 17900000, 17900000
.   : milestone, 17900000,
profiling (14.763 s) : 14763000, 14763000
.   : milestone, 14763000,
tracing (14.935 s) : 14935000, 14935000
.   : milestone, 14935000,
section candidate
no_agent (15.598 s) : 15598000, 15598000
.   : milestone, 15598000,
appsec (14.728 s) : 14728000, 14728000
.   : milestone, 14728000,
iast (18.059 s) : 18059000, 18059000
.   : milestone, 18059000,
iast_GLOBAL (17.852 s) : 17852000, 17852000
.   : milestone, 17852000,
profiling (15.26 s) : 15260000, 15260000
.   : milestone, 15260000,
tracing (14.845 s) : 14845000, 14845000
.   : milestone, 14845000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.548 s [15.548 s, 15.548 s] -
appsec 14.499 s [14.499 s, 14.499 s] -1.049 s (-6.7%)
iast 18.065 s [18.065 s, 18.065 s] 2.517 s (16.2%)
iast_GLOBAL 17.9 s [17.9 s, 17.9 s] 2.352 s (15.1%)
profiling 14.763 s [14.763 s, 14.763 s] -785.0 ms (-5.0%)
tracing 14.935 s [14.935 s, 14.935 s] -613.0 ms (-3.9%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.598 s [15.598 s, 15.598 s] -
appsec 14.728 s [14.728 s, 14.728 s] -870.0 ms (-5.6%)
iast 18.059 s [18.059 s, 18.059 s] 2.461 s (15.8%)
iast_GLOBAL 17.852 s [17.852 s, 17.852 s] 2.254 s (14.5%)
profiling 15.26 s [15.26 s, 15.26 s] -338.0 ms (-2.2%)
tracing 14.845 s [14.845 s, 14.845 s] -753.0 ms (-4.8%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~17ebcd0a24, baseline=1.62.0-SNAPSHOT~95de525c87
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.497 ms) : 1485, 1509
.   : milestone, 1497,
appsec (3.872 ms) : 3647, 4096
.   : milestone, 3872,
iast (2.291 ms) : 2220, 2361
.   : milestone, 2291,
iast_GLOBAL (2.331 ms) : 2260, 2402
.   : milestone, 2331,
profiling (2.123 ms) : 2067, 2179
.   : milestone, 2123,
tracing (2.105 ms) : 2050, 2160
.   : milestone, 2105,
section candidate
no_agent (1.492 ms) : 1481, 1504
.   : milestone, 1492,
appsec (2.568 ms) : 2512, 2623
.   : milestone, 2568,
iast (2.282 ms) : 2212, 2353
.   : milestone, 2282,
iast_GLOBAL (2.337 ms) : 2266, 2408
.   : milestone, 2337,
profiling (2.098 ms) : 2042, 2154
.   : milestone, 2098,
tracing (2.103 ms) : 2048, 2158
.   : milestone, 2103,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.497 ms [1.485 ms, 1.509 ms] -
appsec 3.872 ms [3.647 ms, 4.096 ms] 2.375 ms (158.7%)
iast 2.291 ms [2.22 ms, 2.361 ms] 793.975 µs (53.0%)
iast_GLOBAL 2.331 ms [2.26 ms, 2.402 ms] 834.449 µs (55.8%)
profiling 2.123 ms [2.067 ms, 2.179 ms] 626.445 µs (41.9%)
tracing 2.105 ms [2.05 ms, 2.16 ms] 608.214 µs (40.6%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.492 ms [1.481 ms, 1.504 ms] -
appsec 2.568 ms [2.512 ms, 2.623 ms] 1.075 ms (72.0%)
iast 2.282 ms [2.212 ms, 2.353 ms] 789.836 µs (52.9%)
iast_GLOBAL 2.337 ms [2.266 ms, 2.408 ms] 844.336 µs (56.6%)
profiling 2.098 ms [2.042 ms, 2.154 ms] 605.581 µs (40.6%)
tracing 2.103 ms [2.048 ms, 2.158 ms] 610.673 µs (40.9%)

@github-actions github-actions Bot added the tag: ai generated Largely based on code generated by an AI or LLM label Apr 16, 2026
@ValentinZakharov ValentinZakharov force-pushed the vzakharov/sofa-rpc branch 4 times, most recently from 96c7d44 to ea98882 Compare April 16, 2026 22:44
@PerfectSlayer
Copy link
Copy Markdown
Contributor

For info, I clean up the duplicate "inst:sofa rpc" (without the space after :) and added description so it would be use for the changelog generation.

@ValentinZakharov ValentinZakharov requested a review from a team as a code owner April 17, 2026 18:58
@ValentinZakharov ValentinZakharov requested review from amarziali and removed request for a team April 17, 2026 18:58
@@ -0,0 +1 @@
apply from: "$rootDir/gradle/java.gradle"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note you can delete dd-java-agent/instrumentation/sofarpc/build.gradle and omit the ":dd-java-agent:instrumentation:sofarpc", entry from settings.gradle if this parent directory doesn't contain any source / resources.

Copy link
Copy Markdown
Contributor

@mcculls mcculls left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for the comprehensive tests

Comment on lines +30 to +37
class SofaRpcRestTest extends InstrumentationSpecification {

@Shared
int port = 12205

@Shared
ProviderBootstrap restProviderBootstrap

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just curious if tests can be implemented with JUnit?
Recently we added a lot of functionality and base classes to simplify conversion from Groovy to JUnit.
Assuming this is new code it would benefit to have JUnit tests if possible

@ValentinZakharov
Copy link
Copy Markdown
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351
Copy link
Copy Markdown

gh-worker-devflow-routing-ef8351 Bot commented Apr 23, 2026

View all feedbacks in Devflow UI.

2026-04-23 08:52:07 UTC ℹ️ Start processing command /merge


2026-04-23 08:52:12 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in master is approximately 2h (p90).


2026-04-23 10:11:43 UTC ℹ️ MergeQueue: This merge request was merged

@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d Bot merged commit 93780c1 into master Apr 23, 2026
747 of 749 checks passed
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d Bot deleted the vzakharov/sofa-rpc branch April 23, 2026 10:11
@github-actions github-actions Bot added this to the 1.62.0 milestone Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: context propagation Trace context propagation inst: sofa rpc Sofa RPC tag: ai generated Largely based on code generated by an AI or LLM type: feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants