From 1db19351835cbce05ce11119557fc6f0067b2941 Mon Sep 17 00:00:00 2001 From: Aaron Steinfeld Date: Fri, 6 Dec 2024 11:57:34 -0500 Subject: [PATCH 1/2] chore: add default timeout interceptor --- .../DefaultTimeoutClientInterceptor.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 grpc-client-utils/src/main/java/org/hypertrace/core/grpcutils/client/DefaultTimeoutClientInterceptor.java diff --git a/grpc-client-utils/src/main/java/org/hypertrace/core/grpcutils/client/DefaultTimeoutClientInterceptor.java b/grpc-client-utils/src/main/java/org/hypertrace/core/grpcutils/client/DefaultTimeoutClientInterceptor.java new file mode 100644 index 0000000..bdf80bd --- /dev/null +++ b/grpc-client-utils/src/main/java/org/hypertrace/core/grpcutils/client/DefaultTimeoutClientInterceptor.java @@ -0,0 +1,34 @@ +package org.hypertrace.core.grpcutils.client; + +import static java.util.Objects.isNull; + +import io.grpc.CallOptions; +import io.grpc.Channel; +import io.grpc.ClientCall; +import io.grpc.ClientInterceptor; +import io.grpc.Context; +import io.grpc.MethodDescriptor; +import java.time.Duration; +import java.util.concurrent.TimeUnit; +import javax.annotation.Nonnull; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@AllArgsConstructor +public class DefaultTimeoutClientInterceptor implements ClientInterceptor { + private final @Nonnull Duration defaultTimeout; + + @Override + public ClientCall interceptCall( + MethodDescriptor methodDescriptor, CallOptions providedOptions, Channel next) { + + if (isNull(providedOptions.getDeadline()) && isNull(Context.current().getDeadline())) { + return next.newCall( + methodDescriptor, + providedOptions.withDeadlineAfter(defaultTimeout.toMillis(), TimeUnit.MILLISECONDS)); + } + + return next.newCall(methodDescriptor, providedOptions); + } +} From b240736dda969dadf5a04ab38f9f450daa816185 Mon Sep 17 00:00:00 2001 From: Aaron Steinfeld Date: Fri, 6 Dec 2024 11:59:17 -0500 Subject: [PATCH 2/2] refactor: remove unused slf4j --- .../core/grpcutils/client/DefaultTimeoutClientInterceptor.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/grpc-client-utils/src/main/java/org/hypertrace/core/grpcutils/client/DefaultTimeoutClientInterceptor.java b/grpc-client-utils/src/main/java/org/hypertrace/core/grpcutils/client/DefaultTimeoutClientInterceptor.java index bdf80bd..ab65d71 100644 --- a/grpc-client-utils/src/main/java/org/hypertrace/core/grpcutils/client/DefaultTimeoutClientInterceptor.java +++ b/grpc-client-utils/src/main/java/org/hypertrace/core/grpcutils/client/DefaultTimeoutClientInterceptor.java @@ -12,9 +12,7 @@ import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -@Slf4j @AllArgsConstructor public class DefaultTimeoutClientInterceptor implements ClientInterceptor { private final @Nonnull Duration defaultTimeout;