Skip to content

Commit 39a1894

Browse files
committed
Remove TraceId HTTP response header support
Closes gh-44752
1 parent 93d6caf commit 39a1894

File tree

8 files changed

+26
-322
lines changed

8 files changed

+26
-322
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ dependencies {
136136
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
137137
testImplementation(testFixtures(project(":spring-boot-project:spring-boot")))
138138
testImplementation("io.micrometer:micrometer-observation-test")
139-
testImplementation("io.micrometer:micrometer-tracing-test")
140139
testImplementation("io.projectreactor:reactor-test")
141140
testImplementation("io.prometheus:prometheus-metrics-exposition-formats")
142141
testImplementation("io.r2dbc:r2dbc-h2")

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/ObservationProperties.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2025 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -127,11 +127,6 @@ public static class ServerRequests {
127127
*/
128128
private String name = "http.server.requests";
129129

130-
/**
131-
* Whether to write the "X-Trace-Id" HTTP response header.
132-
*/
133-
private boolean writeTraceHeader = false;
134-
135130
public String getName() {
136131
return this.name;
137132
}
@@ -140,14 +135,6 @@ public void setName(String name) {
140135
this.name = name;
141136
}
142137

143-
public boolean isWriteTraceHeader() {
144-
return this.writeTraceHeader;
145-
}
146-
147-
public void setWriteTraceHeader(boolean writeTraceHeader) {
148-
this.writeTraceHeader = writeTraceHeader;
149-
}
150-
151138
}
152139

153140
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/servlet/ObservationFilterConfigurations.java

Lines changed: 0 additions & 89 deletions
This file was deleted.

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/servlet/TraceHeaderObservationFilter.java

Lines changed: 0 additions & 77 deletions
This file was deleted.

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/servlet/WebMvcObservationAutoConfiguration.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2025 the original author or authors.
2+
* Copyright 2012-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -20,7 +20,9 @@
2020
import io.micrometer.core.instrument.config.MeterFilter;
2121
import io.micrometer.observation.Observation;
2222
import io.micrometer.observation.ObservationRegistry;
23+
import jakarta.servlet.DispatcherType;
2324

25+
import org.springframework.beans.factory.ObjectProvider;
2426
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
2527
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2628
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties;
@@ -33,11 +35,16 @@
3335
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
3436
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3537
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
38+
import org.springframework.boot.autoconfigure.web.servlet.ConditionalOnMissingFilterBean;
3639
import org.springframework.boot.context.properties.EnableConfigurationProperties;
40+
import org.springframework.boot.web.servlet.FilterRegistrationBean;
3741
import org.springframework.context.annotation.Bean;
3842
import org.springframework.context.annotation.Configuration;
39-
import org.springframework.context.annotation.Import;
43+
import org.springframework.core.Ordered;
4044
import org.springframework.core.annotation.Order;
45+
import org.springframework.http.server.observation.DefaultServerRequestObservationConvention;
46+
import org.springframework.http.server.observation.ServerRequestObservationConvention;
47+
import org.springframework.web.filter.ServerHttpObservationFilter;
4148
import org.springframework.web.servlet.DispatcherServlet;
4249

4350
/**
@@ -55,10 +62,23 @@
5562
@ConditionalOnClass({ DispatcherServlet.class, Observation.class })
5663
@ConditionalOnBean(ObservationRegistry.class)
5764
@EnableConfigurationProperties({ MetricsProperties.class, ObservationProperties.class })
58-
@Import({ ObservationFilterConfigurations.TracingHeaderObservation.class,
59-
ObservationFilterConfigurations.DefaultObservation.class })
6065
public class WebMvcObservationAutoConfiguration {
6166

67+
@Bean
68+
@ConditionalOnMissingFilterBean
69+
public FilterRegistrationBean<ServerHttpObservationFilter> webMvcObservationFilter(ObservationRegistry registry,
70+
ObjectProvider<ServerRequestObservationConvention> customConvention,
71+
ObservationProperties observationProperties) {
72+
String name = observationProperties.getHttp().getServer().getRequests().getName();
73+
ServerRequestObservationConvention convention = customConvention
74+
.getIfAvailable(() -> new DefaultServerRequestObservationConvention(name));
75+
ServerHttpObservationFilter filter = new ServerHttpObservationFilter(registry, convention);
76+
FilterRegistrationBean<ServerHttpObservationFilter> registration = new FilterRegistrationBean<>(filter);
77+
registration.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
78+
registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ASYNC);
79+
return registration;
80+
}
81+
6282
@Configuration(proxyBeanMethods = false)
6383
@ConditionalOnClass(MeterRegistry.class)
6484
@ConditionalOnBean(MeterRegistry.class)

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/servlet/TraceHeaderObservationFilterTests.java

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)