1313import io .sentry .util .SpanUtils ;
1414import io .sentry .util .TracingUtils ;
1515import java .nio .charset .StandardCharsets ;
16+ import java .util .ArrayList ;
17+ import java .util .List ;
1618import java .util .Map ;
1719import org .apache .kafka .clients .producer .ProducerInterceptor ;
1820import org .apache .kafka .clients .producer .ProducerRecord ;
1921import org .apache .kafka .clients .producer .RecordMetadata ;
22+ import org .apache .kafka .common .header .Header ;
2023import org .apache .kafka .common .header .Headers ;
2124import org .jetbrains .annotations .ApiStatus ;
2225import org .jetbrains .annotations .NotNull ;
@@ -97,8 +100,10 @@ public void close() {}
97100 public void configure (final @ Nullable Map <String , ?> configs ) {}
98101
99102 private void injectHeaders (final @ NotNull Headers headers , final @ NotNull ISpan span ) {
103+ final @ Nullable List <String > existingBaggageHeaders =
104+ readHeaderValues (headers , BaggageHeader .BAGGAGE_HEADER );
100105 final @ Nullable TracingUtils .TracingHeaders tracingHeaders =
101- TracingUtils .trace (scopes , null , span );
106+ TracingUtils .trace (scopes , existingBaggageHeaders , span );
102107 if (tracingHeaders != null ) {
103108 final @ NotNull SentryTraceHeader sentryTraceHeader = tracingHeaders .getSentryTraceHeader ();
104109 headers .remove (sentryTraceHeader .getName ());
@@ -120,4 +125,19 @@ private void injectHeaders(final @NotNull Headers headers, final @NotNull ISpan
120125 String .valueOf (DateUtils .millisToSeconds (System .currentTimeMillis ()))
121126 .getBytes (StandardCharsets .UTF_8 ));
122127 }
128+
129+ private static @ Nullable List <String > readHeaderValues (
130+ final @ NotNull Headers headers , final @ NotNull String name ) {
131+ @ Nullable List <String > values = null ;
132+ for (final @ NotNull Header header : headers .headers (name )) {
133+ final byte @ Nullable [] value = header .value ();
134+ if (value != null ) {
135+ if (values == null ) {
136+ values = new ArrayList <>();
137+ }
138+ values .add (new String (value , StandardCharsets .UTF_8 ));
139+ }
140+ }
141+ return values ;
142+ }
123143}
0 commit comments