Skip to content

Commit 11c7ac9

Browse files
committed
Don't create observationCoroutineGrpcServerInterceptor bean when micrometer context-propagation isn't present on classpath
Signed-off-by: Alexey Genus <genus.alexey@gmail.com>
1 parent f3adb18 commit 11c7ac9

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

spring-grpc-server-spring-boot-autoconfigure/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,11 @@
142142
<artifactId>micrometer-core</artifactId>
143143
<optional>true</optional>
144144
</dependency>
145+
<dependency>
146+
<groupId>io.micrometer</groupId>
147+
<artifactId>context-propagation</artifactId>
148+
<optional>true</optional>
149+
</dependency>
145150
<dependency>
146151
<groupId>io.netty</groupId>
147152
<artifactId>netty-transport-native-epoll</artifactId>

spring-grpc-server-spring-boot-autoconfigure/src/main/java/org/springframework/boot/grpc/server/autoconfigure/GrpcServerObservationAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ ObservationGrpcServerInterceptor observationGrpcServerInterceptor(ObservationReg
5353
}
5454

5555
@Configuration(proxyBeanMethods = false)
56-
@ConditionalOnClass(name = "io.grpc.kotlin.AbstractCoroutineStub")
56+
@ConditionalOnClass(name = { "io.grpc.kotlin.AbstractCoroutineStub", "io.micrometer.context.ContextRegistry" })
5757
static class GrpcServerCoroutineStubConfiguration {
5858

5959
@Bean

spring-grpc-server-spring-boot-autoconfigure/src/test/java/org/springframework/boot/grpc/server/autoconfigure/GrpcServerObservationAutoConfigurationTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@
3333

3434
import io.grpc.BindableService;
3535
import io.grpc.ServerInterceptor;
36+
import io.micrometer.context.ContextRegistry;
3637
import io.micrometer.core.instrument.binder.grpc.ObservationGrpcServerInterceptor;
38+
import io.micrometer.core.instrument.kotlin.ObservationCoroutineContextServerInterceptor;
3739
import io.micrometer.observation.ObservationRegistry;
3840

3941
/**
@@ -131,4 +133,12 @@ void whenAllConditionsAreMetThenInterceptorConfiguredAsExpected() {
131133
}, "Two global interceptors expected")));
132134
}
133135

136+
@Test
137+
void whenMicrometerContextPropagationIsNotOnClasspathCoroutineInterceptorIsNotCreated() {
138+
this.validContextRunner()
139+
.withClassLoader(new FilteredClassLoader(ContextRegistry.class))
140+
.run((context) -> assertThat(context).hasSingleBean(ObservationGrpcServerInterceptor.class)
141+
.doesNotHaveBean(ObservationCoroutineContextServerInterceptor.class));
142+
}
143+
134144
}

0 commit comments

Comments
 (0)