Skip to content

Commit 1db1935

Browse files
chore: add default timeout interceptor
1 parent d818b0d commit 1db1935

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package org.hypertrace.core.grpcutils.client;
2+
3+
import static java.util.Objects.isNull;
4+
5+
import io.grpc.CallOptions;
6+
import io.grpc.Channel;
7+
import io.grpc.ClientCall;
8+
import io.grpc.ClientInterceptor;
9+
import io.grpc.Context;
10+
import io.grpc.MethodDescriptor;
11+
import java.time.Duration;
12+
import java.util.concurrent.TimeUnit;
13+
import javax.annotation.Nonnull;
14+
import lombok.AllArgsConstructor;
15+
import lombok.extern.slf4j.Slf4j;
16+
17+
@Slf4j
18+
@AllArgsConstructor
19+
public class DefaultTimeoutClientInterceptor implements ClientInterceptor {
20+
private final @Nonnull Duration defaultTimeout;
21+
22+
@Override
23+
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
24+
MethodDescriptor<ReqT, RespT> methodDescriptor, CallOptions providedOptions, Channel next) {
25+
26+
if (isNull(providedOptions.getDeadline()) && isNull(Context.current().getDeadline())) {
27+
return next.newCall(
28+
methodDescriptor,
29+
providedOptions.withDeadlineAfter(defaultTimeout.toMillis(), TimeUnit.MILLISECONDS));
30+
}
31+
32+
return next.newCall(methodDescriptor, providedOptions);
33+
}
34+
}

0 commit comments

Comments
 (0)