Skip to content

Commit efcc65b

Browse files
committed
Apply filter order to ServerHttpObservationFilter
Closes gh-35067
1 parent 140c37c commit efcc65b

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import org.springframework.boot.web.servlet.FilterRegistrationBean;
4545
import org.springframework.context.annotation.Bean;
4646
import org.springframework.context.annotation.Configuration;
47-
import org.springframework.core.Ordered;
4847
import org.springframework.core.annotation.Order;
4948
import org.springframework.http.server.observation.DefaultServerRequestObservationConvention;
5049
import org.springframework.http.server.observation.ServerRequestObservationConvention;
@@ -58,6 +57,7 @@
5857
* @author Brian Clozel
5958
* @author Jon Schneider
6059
* @author Dmytro Nosan
60+
* @author Moritz Halbritter
6161
* @since 3.0.0
6262
*/
6363
@AutoConfiguration(after = { MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class,
@@ -90,7 +90,7 @@ public FilterRegistrationBean<ServerHttpObservationFilter> webMvcObservationFilt
9090
customTagsProvider.getIfAvailable(), contributorsProvider.orderedStream().toList());
9191
ServerHttpObservationFilter filter = new ServerHttpObservationFilter(registry, convention);
9292
FilterRegistrationBean<ServerHttpObservationFilter> registration = new FilterRegistrationBean<>(filter);
93-
registration.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
93+
registration.setOrder(this.observationProperties.getHttp().getServer().getFilter().getOrder());
9494
registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ASYNC);
9595
return registration;
9696
}

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

+10
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
* @author Tadaya Tsuyukubo
6565
* @author Madhura Bhave
6666
* @author Chanhyeong LEE
67+
* @author Moritz Halbritter
6768
*/
6869
@ExtendWith(OutputCaptureExtension.class)
6970
@SuppressWarnings("removal")
@@ -117,6 +118,15 @@ void filterRegistrationHasExpectedDispatcherTypesAndOrder() {
117118
});
118119
}
119120

121+
@Test
122+
void filterRegistrationOrderCanBeOverridden() {
123+
this.contextRunner.withPropertyValues("management.observations.http.server.filter.order=1000")
124+
.run((context) -> {
125+
FilterRegistrationBean<?> registration = context.getBean(FilterRegistrationBean.class);
126+
assertThat(registration.getOrder()).isEqualTo(1000);
127+
});
128+
}
129+
120130
@Test
121131
void filterRegistrationBacksOffWithAnotherServerHttpObservationFilterRegistration() {
122132
this.contextRunner.withUserConfiguration(TestServerHttpObservationFilterRegistrationConfiguration.class)

0 commit comments

Comments
 (0)