Fix NPE in user events tracking (#5732)#5757
Conversation
* Fixed SpringSecurity NullPointerException when user creation happens outside request. * Spotless
BenchmarksStartupParameters
See matching parameters
SummaryFound 6 performance improvements and 2 performance regressions! Performance is the same for 54 cases.
Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.20.0-SNAPSHOT~023d122058, baseline=1.20.0-SNAPSHOT~3a4d10997a
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (987.608 ms) : 0, 987608
Total [baseline] (8.631 s) : 0, 8631173
Agent [candidate] (984.894 ms) : 0, 984894
Total [candidate] (8.63 s) : 0, 8630107
section appsec
Agent [baseline] (1.072 s) : 0, 1072236
Total [baseline] (8.718 s) : 0, 8717742
Agent [candidate] (1.084 s) : 0, 1083877
Total [candidate] (8.774 s) : 0, 8773678
section iast
Agent [baseline] (1.093 s) : 0, 1092505
Total [baseline] (9.162 s) : 0, 9162068
Agent [candidate] (1.091 s) : 0, 1091242
Total [candidate] (9.191 s) : 0, 9191316
section profiling
Agent [baseline] (1.163 s) : 0, 1163197
Total [baseline] (8.919 s) : 0, 8918548
Agent [candidate] (1.15 s) : 0, 1149952
Total [candidate] (8.916 s) : 0, 8915647
gantt
title insecure-bank - break down per module: candidate=1.20.0-SNAPSHOT~023d122058, baseline=1.20.0-SNAPSHOT~3a4d10997a
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (612.226 ms) : 0, 612226
BytebuddyAgent [candidate] (610.628 ms) : 0, 610628
GlobalTracer [baseline] (284.516 ms) : 0, 284516
GlobalTracer [candidate] (283.642 ms) : 0, 283642
AppSec [baseline] (49.831 ms) : 0, 49831
AppSec [candidate] (50.191 ms) : 0, 50191
Remote Config [baseline] (659.363 µs) : 0, 659
Remote Config [candidate] (666.572 µs) : 0, 667
Telemetry [baseline] (5.981 ms) : 0, 5981
Telemetry [candidate] (5.362 ms) : 0, 5362
section appsec
BytebuddyAgent [baseline] (612.002 ms) : 0, 612002
BytebuddyAgent [candidate] (619.366 ms) : 0, 619366
GlobalTracer [baseline] (284.645 ms) : 0, 284645
GlobalTracer [candidate] (288.213 ms) : 0, 288213
AppSec [baseline] (134.821 ms) : 0, 134821
AppSec [candidate] (135.747 ms) : 0, 135747
Remote Config [baseline] (724.465 µs) : 0, 724
Remote Config [candidate] (732.659 µs) : 0, 733
Telemetry [baseline] (5.77 ms) : 0, 5770
Telemetry [candidate] (5.207 ms) : 0, 5207
section iast
BytebuddyAgent [baseline] (720.142 ms) : 0, 720142
BytebuddyAgent [candidate] (716.799 ms) : 0, 716799
GlobalTracer [baseline] (270.849 ms) : 0, 270849
GlobalTracer [candidate] (273.009 ms) : 0, 273009
AppSec [baseline] (47.174 ms) : 0, 47174
AppSec [candidate] (47.442 ms) : 0, 47442
Remote Config [baseline] (546.415 µs) : 0, 546
Remote Config [candidate] (648.675 µs) : 0, 649
Telemetry [baseline] (5.674 ms) : 0, 5674
Telemetry [candidate] (5.623 ms) : 0, 5623
IAST [baseline] (13.791 ms) : 0, 13792
IAST [candidate] (13.362 ms) : 0, 13362
section profiling
ProfilingAgent [baseline] (76.809 ms) : 0, 76809
ProfilingAgent [candidate] (74.382 ms) : 0, 74382
BytebuddyAgent [baseline] (629.806 ms) : 0, 629806
BytebuddyAgent [candidate] (622.544 ms) : 0, 622544
GlobalTracer [baseline] (347.378 ms) : 0, 347378
GlobalTracer [candidate] (345.672 ms) : 0, 345672
AppSec [baseline] (49.203 ms) : 0, 49203
AppSec [candidate] (48.681 ms) : 0, 48681
Remote Config [baseline] (657.643 µs) : 0, 658
Remote Config [candidate] (650.901 µs) : 0, 651
Telemetry [baseline] (6.02 ms) : 0, 6020
Telemetry [candidate] (5.279 ms) : 0, 5279
Profiling [baseline] (76.833 ms) : 0, 76833
Profiling [candidate] (74.407 ms) : 0, 74407
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.20.0-SNAPSHOT~023d122058, baseline=1.20.0-SNAPSHOT~3a4d10997a
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (988.093 ms) : 0, 988093
Total [baseline] (9.169 s) : 0, 9168600
Agent [candidate] (999.312 ms) : 0, 999312
Total [candidate] (9.172 s) : 0, 9171684
section appsec
Agent [baseline] (1.071 s) : 0, 1071036
Total [baseline] (9.254 s) : 0, 9254032
Agent [candidate] (1.069 s) : 0, 1068532
Total [candidate] (9.244 s) : 0, 9243754
section iast
Agent [baseline] (1.09 s) : 0, 1089741
Total [baseline] (9.408 s) : 0, 9407823
Agent [candidate] (1.093 s) : 0, 1093328
Total [candidate] (9.426 s) : 0, 9426355
section profiling
Agent [baseline] (1.155 s) : 0, 1154547
Total [baseline] (9.463 s) : 0, 9462995
Agent [candidate] (1.152 s) : 0, 1151811
Total [candidate] (9.46 s) : 0, 9459973
gantt
title petclinic - break down per module: candidate=1.20.0-SNAPSHOT~023d122058, baseline=1.20.0-SNAPSHOT~3a4d10997a
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (612.781 ms) : 0, 612781
BytebuddyAgent [candidate] (619.367 ms) : 0, 619367
GlobalTracer [baseline] (283.992 ms) : 0, 283992
GlobalTracer [candidate] (288.333 ms) : 0, 288333
AppSec [baseline] (50.343 ms) : 0, 50343
AppSec [candidate] (50.722 ms) : 0, 50722
Remote Config [baseline] (663.429 µs) : 0, 663
Remote Config [candidate] (673.552 µs) : 0, 674
Telemetry [baseline] (5.991 ms) : 0, 5991
Telemetry [candidate] (5.457 ms) : 0, 5457
section appsec
BytebuddyAgent [baseline] (611.93 ms) : 0, 611930
BytebuddyAgent [candidate] (609.414 ms) : 0, 609414
GlobalTracer [baseline] (283.817 ms) : 0, 283817
GlobalTracer [candidate] (283.772 ms) : 0, 283772
AppSec [baseline] (134.521 ms) : 0, 134521
AppSec [candidate] (135.299 ms) : 0, 135299
Remote Config [baseline] (722.132 µs) : 0, 722
Remote Config [candidate] (720.625 µs) : 0, 721
Telemetry [baseline] (5.723 ms) : 0, 5723
Telemetry [candidate] (5.132 ms) : 0, 5132
section iast
BytebuddyAgent [baseline] (717.916 ms) : 0, 717916
BytebuddyAgent [candidate] (718.653 ms) : 0, 718653
GlobalTracer [baseline] (270.397 ms) : 0, 270397
GlobalTracer [candidate] (273.388 ms) : 0, 273388
AppSec [baseline] (47.142 ms) : 0, 47142
AppSec [candidate] (47.29 ms) : 0, 47290
Remote Config [baseline] (543.052 µs) : 0, 543
Remote Config [candidate] (633.759 µs) : 0, 634
Telemetry [baseline] (5.659 ms) : 0, 5659
Telemetry [candidate] (5.476 ms) : 0, 5476
IAST [baseline] (13.717 ms) : 0, 13717
IAST [candidate] (13.301 ms) : 0, 13301
section profiling
ProfilingAgent [baseline] (77.037 ms) : 0, 77037
ProfilingAgent [candidate] (75.691 ms) : 0, 75691
BytebuddyAgent [baseline] (624.098 ms) : 0, 624098
BytebuddyAgent [candidate] (622.523 ms) : 0, 622523
GlobalTracer [baseline] (345.109 ms) : 0, 345109
GlobalTracer [candidate] (345.89 ms) : 0, 345890
AppSec [baseline] (48.864 ms) : 0, 48864
AppSec [candidate] (48.993 ms) : 0, 48993
Remote Config [baseline] (646.228 µs) : 0, 646
Remote Config [candidate] (641.444 µs) : 0, 641
Telemetry [baseline] (5.946 ms) : 0, 5946
Telemetry [candidate] (5.297 ms) : 0, 5297
Profiling [baseline] (77.062 ms) : 0, 77062
Profiling [candidate] (75.715 ms) : 0, 75715
LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 22 cases. |
| @Override | ||
| public TraceSegment getTraceSegment() { | ||
| AgentSpan.Context ctx = activeSpan().context(); | ||
| AgentSpan activeSpan = activeSpan(); |
There was a problem hiding this comment.
This method leaves me a bit uncomfortable, because it behaves differently from RequestContext#getTraceSegment, which never returns null. There is a TraceSegment.Noop that can be used here, but at the cost doing unnecessary work if there's no active span. The question is whether there being no active span is a frequent enough occurrence, that it's working risking NPEs
There was a problem hiding this comment.
@cataphract Agreed. Since this was the only instance where we had no active spans. However, given that this is a backport PR, I would prefer to move on with this option, which was already merged and tested in master.
I'll open a separate PR to master to follow this up.
There was a problem hiding this comment.
On the other hand, the CoreTracer#getTraceSegment usage is pretty limited. All current usages consider null.
What Does This Do
Motivation
Additional Notes
Backport of #5732