Skip to content

Commit 18254e7

Browse files
Бацура Сергей АлександровичБацура Сергей Александрович
Бацура Сергей Александрович
authored and
Бацура Сергей Александрович
committed
Feat(deadline) removed wasted DeadlineSetupClientInterceptor calls in runtime
1 parent e14b9fe commit 18254e7

File tree

3 files changed

+5
-18
lines changed

3 files changed

+5
-18
lines changed

grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientDeadlineAutoConfiguration.java

+1-12
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818

1919
import static java.util.Objects.requireNonNull;
2020

21-
import java.time.Duration;
22-
2321
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
2422
import org.springframework.context.annotation.Bean;
2523
import org.springframework.context.annotation.Configuration;
@@ -32,7 +30,6 @@
3230
import net.devh.boot.grpc.client.config.GrpcChannelsProperties;
3331
import net.devh.boot.grpc.client.inject.StubTransformer;
3432
import net.devh.boot.grpc.client.interceptor.DeadlineSetupClientInterceptor;
35-
import net.devh.boot.grpc.client.interceptor.GrpcGlobalClientInterceptor;
3633

3734
/**
3835
* The deadline autoconfiguration for the client.
@@ -52,9 +49,6 @@
5249
@AutoConfigureBefore(GrpcClientAutoConfiguration.class)
5350
public class GrpcClientDeadlineAutoConfiguration {
5451

55-
private final CallOptions.Key<Duration> deadlineDuration =
56-
CallOptions.Key.createWithDefault("deadlineDuration", null);
57-
5852
/**
5953
* Creates a {@link StubTransformer} bean that will add the deadlineDuration to the callOptions for using in
6054
* DeadlineSetupClientInterceptor.
@@ -71,16 +65,11 @@ StubTransformer deadlineStubTransformer(final GrpcChannelsProperties props) {
7165
GrpcChannelProperties channelProps = props.getChannel(name);
7266
if (channelProps != null && channelProps.getDeadline() != null
7367
&& channelProps.getDeadline().toMillis() > 0L) {
74-
return stub.withOption(deadlineDuration, channelProps.getDeadline());
68+
return stub.withInterceptors(new DeadlineSetupClientInterceptor(channelProps.getDeadline()));
7569
} else {
7670
return stub;
7771
}
7872
};
7973
}
8074

81-
@GrpcGlobalClientInterceptor
82-
DeadlineSetupClientInterceptor deadlineClientInterceptor() {
83-
return new DeadlineSetupClientInterceptor(deadlineDuration);
84-
}
85-
8675
}

grpc-client-spring-boot-starter/src/main/java/net/devh/boot/grpc/client/interceptor/DeadlineSetupClientInterceptor.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,17 @@
3737
@RequiredArgsConstructor
3838
public class DeadlineSetupClientInterceptor implements ClientInterceptor {
3939

40-
private final CallOptions.Key<Duration> deadlineDuration;
40+
private final Duration defaultDeadline;
4141

4242
@Override
4343
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
4444
final MethodDescriptor<ReqT, RespT> method,
4545
final CallOptions callOptions,
4646
final Channel next) {
4747

48-
Duration duration = callOptions.getOption(deadlineDuration);
49-
if (duration != null) {
50-
return next.newCall(method, callOptions.withDeadlineAfter(duration.toMillis(), TimeUnit.MILLISECONDS));
48+
if (defaultDeadline != null) {
49+
return next.newCall(method,
50+
callOptions.withDeadlineAfter(defaultDeadline.toMillis(), TimeUnit.MILLISECONDS));
5151
} else {
5252
return next.newCall(method, callOptions);
5353
}

tests/src/test/java/net/devh/boot/grpc/test/interceptor/DefaultClientInterceptorTest.java

-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import io.micrometer.core.instrument.binder.grpc.MetricCollectingClientInterceptor;
3434
import io.micrometer.core.instrument.binder.grpc.ObservationGrpcClientInterceptor;
3535
import net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration;
36-
import net.devh.boot.grpc.client.interceptor.DeadlineSetupClientInterceptor;
3736
import net.devh.boot.grpc.client.interceptor.GlobalClientInterceptorRegistry;
3837
import net.devh.boot.grpc.client.metrics.MetricsClientInterceptor;
3938

@@ -55,7 +54,6 @@ void testDefaultInterceptors() {
5554
expected.add(this.applicationContext.getBean(MetricCollectingClientInterceptor.class));
5655
expected.add(this.applicationContext.getBean(MetricsClientInterceptor.class));
5756
expected.add(this.applicationContext.getBean(ObservationGrpcClientInterceptor.class));
58-
expected.add(this.applicationContext.getBean(DeadlineSetupClientInterceptor.class));
5957

6058
final List<ClientInterceptor> actual = new ArrayList<>(this.registry.getClientInterceptors());
6159
assertThat(actual).containsExactlyInAnyOrderElementsOf(expected);

0 commit comments

Comments
 (0)