Skip to content

Commit 33bcabb

Browse files
committed
Add property to control consumed tracing types
1 parent aee7d68 commit 33bcabb

File tree

5 files changed

+41
-19
lines changed

5 files changed

+41
-19
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/BraveAutoConfiguration.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,8 @@ static class BraveNoBaggageConfiguration {
167167
@Bean
168168
@ConditionalOnMissingBean
169169
Factory propagationFactory(TracingProperties properties) {
170-
return CompositePropagationFactory.create(properties.getPropagation().getType());
170+
return CompositePropagationFactory.create(properties.getPropagation().getType(),
171+
properties.getPropagation().getConsumeTypes());
171172
}
172173

173174
}
@@ -187,7 +188,8 @@ static class BraveBaggageConfiguration {
187188
BaggagePropagation.FactoryBuilder propagationFactoryBuilder(
188189
ObjectProvider<BaggagePropagationCustomizer> baggagePropagationCustomizers) {
189190
Factory delegate = CompositePropagationFactory.create(BRAVE_BAGGAGE_MANAGER,
190-
this.tracingProperties.getPropagation().getType());
191+
this.tracingProperties.getPropagation().getType(),
192+
this.tracingProperties.getPropagation().getConsumeTypes());
191193
FactoryBuilder builder = BaggagePropagation.newFactoryBuilder(delegate);
192194
baggagePropagationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(builder));
193195
return builder;

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/CompositePropagationFactory.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.tracing;
1818

19-
import java.util.Arrays;
2019
import java.util.Collection;
2120
import java.util.Collections;
2221
import java.util.List;
@@ -134,31 +133,34 @@ public TraceContext decorate(TraceContext context) {
134133

135134
/**
136135
* Creates a new {@link CompositePropagationFactory}, which uses the given
137-
* {@code injectionTypes} for injection and all supported types for extraction.
136+
* {@code injectionTypes} for injection and {@code extractionTypes} for extraction.
138137
* @param baggageManager the baggage manager to use, or {@code null}
139138
* @param injectionTypes the propagation types for injection
139+
* @param extractionTypes the propagation types for extraction
140140
* @return the {@link CompositePropagationFactory}
141141
*/
142142
static CompositePropagationFactory create(BaggageManager baggageManager,
143-
Collection<TracingProperties.Propagation.PropagationType> injectionTypes) {
143+
Collection<TracingProperties.Propagation.PropagationType> injectionTypes,
144+
Collection<TracingProperties.Propagation.PropagationType> extractionTypes) {
144145
List<Factory> injectors = injectionTypes.stream()
145146
.map((injection) -> factoryForType(baggageManager, injection))
146147
.toList();
147-
List<Factory> extractors = Arrays.stream(TracingProperties.Propagation.PropagationType.values())
148+
List<Factory> extractors = extractionTypes.stream()
148149
.map((extraction) -> factoryForType(baggageManager, extraction))
149150
.toList();
150151
return new CompositePropagationFactory(injectors, extractors);
151152
}
152153

153154
/**
154155
* Creates a new {@link CompositePropagationFactory}, which uses the given
155-
* {@code injectionTypes} for injection and all supported types for extraction.
156+
* {@code injectionTypes} for injection and {@code extractionTypes} for extraction.
156157
* @param injectionTypes the propagation types for injection
158+
* @param extractionTypes the propagation types for extraction
157159
* @return the {@link CompositePropagationFactory}
158160
*/
159-
static CompositePropagationFactory create(
160-
Collection<TracingProperties.Propagation.PropagationType> injectionTypes) {
161-
return create(null, injectionTypes);
161+
static CompositePropagationFactory create(Collection<TracingProperties.Propagation.PropagationType> injectionTypes,
162+
Collection<TracingProperties.Propagation.PropagationType> extractionTypes) {
163+
return create(null, injectionTypes, extractionTypes);
162164
}
163165

164166
private static Factory factoryForType(BaggageManager baggageManager,

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/CompositeTextMapPropagator.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.springframework.boot.actuate.autoconfigure.tracing;
1818

1919
import java.util.ArrayList;
20-
import java.util.Arrays;
2120
import java.util.Collection;
2221
import java.util.Collections;
2322
import java.util.List;
@@ -113,30 +112,34 @@ public <C> Context extract(Context context, C carrier, TextMapGetter<C> getter)
113112

114113
/**
115114
* Creates a new {@link CompositeTextMapPropagator}, which uses the given
116-
* {@code injectionTypes} for injection and all supported types for extraction.
115+
* {@code injectionTypes} for injection and {@code extractionTypes} for extraction.
117116
* @param injectionTypes the propagation types for injection
117+
* @param extractionTypes the propagation types for extraction
118118
* @return the {@link CompositeTextMapPropagator}
119119
*/
120-
static TextMapPropagator create(Collection<TracingProperties.Propagation.PropagationType> injectionTypes) {
121-
return create(null, injectionTypes);
120+
static TextMapPropagator create(Collection<TracingProperties.Propagation.PropagationType> injectionTypes,
121+
Collection<TracingProperties.Propagation.PropagationType> extractionTypes) {
122+
return create(null, injectionTypes, extractionTypes);
122123
}
123124

124125
/**
125126
* Creates a new {@link CompositeTextMapPropagator}, which uses the given
126-
* {@code injectionTypes} for injection and all supported types for extraction.
127+
* {@code injectionTypes} for injection and {@code extractionTypes} for extraction.
127128
* @param baggagePropagator the baggage propagator to use, or {@code null}
128129
* @param injectionTypes the propagation types for injection
130+
* @param extractionTypes the propagation types for extraction
129131
* @return the {@link CompositeTextMapPropagator}
130132
*/
131133
static CompositeTextMapPropagator create(TextMapPropagator baggagePropagator,
132-
Collection<TracingProperties.Propagation.PropagationType> injectionTypes) {
134+
Collection<TracingProperties.Propagation.PropagationType> injectionTypes,
135+
Collection<TracingProperties.Propagation.PropagationType> extractionTypes) {
133136
List<TextMapPropagator> injectors = injectionTypes.stream()
134137
.map((injection) -> forType(injection, baggagePropagator != null))
135138
.collect(Collectors.toCollection(ArrayList::new));
136139
if (baggagePropagator != null) {
137140
injectors.add(baggagePropagator);
138141
}
139-
List<TextMapPropagator> extractors = Arrays.stream(TracingProperties.Propagation.PropagationType.values())
142+
List<TextMapPropagator> extractors = extractionTypes.stream()
140143
.map((extraction) -> forType(extraction, baggagePropagator != null))
141144
.toList();
142145
return new CompositeTextMapPropagator(injectors, extractors,

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/OpenTelemetryAutoConfiguration.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,8 @@ TextMapPropagator textMapPropagatorWithBaggage(OtelCurrentTraceContext otelCurre
188188
BaggageTextMapPropagator baggagePropagator = new BaggageTextMapPropagator(remoteFields,
189189
new OtelBaggageManager(otelCurrentTraceContext, remoteFields, Collections.emptyList()));
190190
return CompositeTextMapPropagator.create(baggagePropagator,
191-
this.tracingProperties.getPropagation().getType());
191+
this.tracingProperties.getPropagation().getType(),
192+
this.tracingProperties.getPropagation().getConsumeTypes());
192193
}
193194

194195
@Bean
@@ -207,7 +208,8 @@ static class NoBaggageConfiguration {
207208

208209
@Bean
209210
TextMapPropagator textMapPropagator(TracingProperties properties) {
210-
return CompositeTextMapPropagator.create(properties.getPropagation().getType());
211+
return CompositeTextMapPropagator.create(properties.getPropagation().getType(),
212+
properties.getPropagation().getConsumeTypes());
211213
}
212214

213215
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/TracingProperties.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ public static class Propagation {
170170
*/
171171
private List<PropagationType> type = List.of(PropagationType.W3C);
172172

173+
/**
174+
* Tracing context propagation types consumed by the application.
175+
*/
176+
private List<PropagationType> consumeTypes = List.of(PropagationType.values());
177+
173178
public List<PropagationType> getType() {
174179
return this.type;
175180
}
@@ -178,6 +183,14 @@ public void setType(List<PropagationType> type) {
178183
this.type = type;
179184
}
180185

186+
void setConsumeTypes(List<PropagationType> consumeTypes) {
187+
this.consumeTypes = consumeTypes;
188+
}
189+
190+
List<PropagationType> getConsumeTypes() {
191+
return this.consumeTypes;
192+
}
193+
181194
/**
182195
* Supported propagation types. The declared order of the values matter.
183196
*/

0 commit comments

Comments
 (0)