Fix Synapse 3.0 instrumentation bugs and harden span propagation by bm1549 · Pull Request #10892 · DataDog/dd-trace-java

@bm1549 @claude

Three deterministic bugs fixed:

1. Key mismatch in PassthruInstrumentation: PR #9422 renamed the context
   key constant but forgot to update the hardcoded string literal in
   SynapsePassthruInstrumentation, breaking parent span propagation
   across the passthru mechanism.

2. http.url test assertion: QueryObfuscator recombines http.url with the
   query string after obfuscation. The test expected path-only but the
   actual value correctly includes the query string.

3. Missing peer.service in V1 client spans: SynapseClientDecorator
   returns relative URIs (no host), so peer.hostname was never set.
   Added peer hostname/IP/port extraction from NHttpClientConnection.

Additionally, hardened the passthru span propagation to read the server
span directly from the source connection context rather than relying
solely on activeSpan(). SourceHandler.requestReceived() dispatches to a
worker thread pool, and while java-concurrent instrumentation normally
handles context propagation across ThreadPoolExecutor, the connection-
based lookup is more robust.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>