Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ public void sendMessage(ReqT message) {
log.warn("Cannot format protobuf request message", e);
}

GrpcRequest requestMessage = new GrpcRequest(requestHeaders, null, path, body, "local", count);
GrpcRequest requestMessage = new GrpcRequest(requestHeaders, null, path, body, "local", count, -1L);

sink.requestMessage(requestMessage);
} else if (filter.isDisconnect()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.google.protobuf.AbstractMessage;
import com.google.protobuf.MessageOrBuilder;
import io.grpc.Context;
import io.grpc.Deadline;
import io.grpc.ForwardingServerCall;
import io.grpc.ForwardingServerCallListener;
import io.grpc.Grpc;
Expand All @@ -27,6 +29,7 @@
import java.net.SocketAddress;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;

Expand Down Expand Up @@ -255,6 +258,8 @@ public void onMessage(ReqT message) {

int count = requestCounter.incrementAndGet();

long timeRemainingUntilDeadlineInMilliseconds = getTimeRemainingUntilDeadlineInMilliseconds();

String body = null;
try {
body = payloadJsonMapper.map(m, filter.getRequestBodyFilter());
Expand All @@ -263,7 +268,7 @@ public void onMessage(ReqT message) {
log.info("Cannot format protobuf request message", e);
}

GrpcRequest requestMessage = new GrpcRequest(requestHeaders, remoteAddress, path, body, "remote", count);
GrpcRequest requestMessage = new GrpcRequest(requestHeaders, remoteAddress, path, body, "remote", count, timeRemainingUntilDeadlineInMilliseconds);

sink.requestMessage(requestMessage);
} else if (filter.isDisconnect()) {
Expand All @@ -273,6 +278,17 @@ public void onMessage(ReqT message) {

super.onMessage(message);
}

private static long getTimeRemainingUntilDeadlineInMilliseconds() {
Context requestContext = Context.current();
if(requestContext != null) {
Deadline deadline = requestContext.getDeadline();
if (deadline != null) {
return deadline.timeRemaining(TimeUnit.MILLISECONDS);
}
}
return -1L;
}
};
}
return next.startCall(interceptCall, headers);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ public GrpcRequestMarker(GrpcRequest message) {
protected void writeFields(JsonGenerator generator) throws IOException {
super.writeFields(generator);

long timeRemaining = message.getTimeRemainingUntilDeadlineInMilliseconds();
if(timeRemaining != -1L) {
generator.writeFieldName("deadline-in");
generator.writeNumber(timeRemaining);
}

String body = message.getBody();
if(body != null) {
writeBodyField(generator, body);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ public class GrpcRequest extends GrpcMessage {
private final String body;

private final int number;

private final long timeRemainingUntilDeadlineInMilliseconds;
/**
* Constructor
*
Expand All @@ -16,12 +18,14 @@ public class GrpcRequest extends GrpcMessage {
* @param body body or null
* @param origin remote (i.e. for incoming) or local (i.e. for outgoing)
* @param number request number
* @param timeRemainingUntilDeadlineInMilliseconds remaining time before deadline in milliseconds, or -1 if not available
*/

public GrpcRequest(Map<String, ?> headers, String remote, String uri, String body, String origin, int number) {
public GrpcRequest(Map<String, ?> headers, String remote, String uri, String body, String origin, int number, long timeRemainingUntilDeadlineInMilliseconds) {
super(headers, remote, uri, "request", origin);
this.body = body;
this.number = number;
this.timeRemainingUntilDeadlineInMilliseconds = timeRemainingUntilDeadlineInMilliseconds;
}

public String getBody() {
Expand All @@ -31,4 +35,8 @@ public String getBody() {
public int getNumber() {
return number;
}

public long getTimeRemainingUntilDeadlineInMilliseconds() {
return timeRemainingUntilDeadlineInMilliseconds;
}
}