Propagate trace context across Guidewire WSI SOAP worker threads - #12125
Propagate trace context across Guidewire WSI SOAP worker threads#12125ValentinZakharov wants to merge 2 commits into
Conversation
This comment has been minimized.
This comment has been minimized.
1d2498c to
6db4a35
Compare
🟢 Java Benchmark SLOs — All performance SLOs passed
PR vs. master results
Commit: Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion. |
939ccf2 to
eefb670
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eefb670331
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
Hi! 👋 Thanks for your pull request! 🎉 To help us review it, please make sure to:
If you need help, please check our contributing guidelines. |
There was a problem hiding this comment.
A Guidewire worker can be created under an active span and never run. The constructor then keeps a trace continuation open, so the trace can remain unreported.
🤖 Datadog Autotest · Commit eefb670 · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest
sarahchen6
left a comment
There was a problem hiding this comment.
Looks good from the LP side! Though I think you'll need to add the new DD_TRACE_GUIDEWIRE_ENABLED to https://feature-parity.us1.prod.dog/configurations?viewType=configurations to address the failing validate_supported_configurations_v2_local_file job.
00b498e to
47aed56
Compare
ygree
left a comment
There was a problem hiding this comment.
Has this instrumentations been tested with a real Guidewire impl?
ygree
left a comment
There was a problem hiding this comment.
Approving, assuming it has been tested with a real Guidewire dependency.
|
/merge |
|
View all feedbacks in Devflow UI.
The expected merge time in
Build pipeline has failing jobs for 0e3662f:
What to do next?
DetailsSince those jobs are not marked as being allowed to fail, the pipeline will most likely fail. |
e0589af to
7ebdaef
Compare
7ebdaef to
9972f63
Compare
|
/merge |
|
View all feedbacks in Devflow UI.
The expected merge time in Use ⏳ Building merge commit 539a62f38c in pipeline 1220640332081307931... |
What Does This Do
Adds a
guidewireinstrumentation so outbound SOAP calls keep their trace context.Guidewire runs every SOAP call on its own raw thread (
AsyncResponseImpl$WebserviceInvocationThread, shown as"WSI-Invocation"). We grab the current context when that thread is created and restore it when it runs, so the SOAP http.request span stays attached to its parent instead of starting a new traceMotivation
The agent propagates context for thread pools, but not for a plain
new Thread().start()- which is exactly how Guidewire makes SOAP calls. So the SOAP spans lost their parent (parent_id=0).We can't instrument
java.lang.Threaddirectly (it's on the agent's ignore list and loads before the agent), so we instrument Guidewire's own thread subclass insteadAdditional Notes
run()), so it works on its own. If the default runnable instrumentation also wrapsrun(), that's safe - the context is only consumed once.AsyncResponseImpl$…that extends Thread). Normal thread-pool workers are not touched.DD_TRACE_GUIDEWIRE_ENABLED(on by default)Contributor Checklist
type:and (comp:orinst:) labels in addition to any other useful labelsclose,fix, or any linking keywords when referencing an issueUse
solvesinstead, and assign the PR milestone to the issueJira ticket: [PROJ-IDENT]