Replies: 3 comments 3 replies
-
Deadline is passed as an absolute value of timestamp, so I would suggest checking time is synchronised on these computers. |
Beta Was this translation helpful? Give feedback.
-
What version of gRPC are you using? There was a delay for the first RPCs on a channel that wasn't included in that deadline message, and newer versions of gRPC report back the extra delay those RPCs experienced. My best guesses on how this is happening:
I don't think A→B→C would likely produce these errors without B shortening the deadline (unless the CPU is fully saturated). In that case, there's one timer on B that cancels A→B with RST_STREAM and B→C with a pretty Status. So you'd need a race on B for the Status to beat the fast RST_STREAM. And you'd need that to arrive at A before it has processed its own timer (which starts 1 RTT earlier). We know the race on A can happen, but it should be rare (definitely seen in practice, but not frequent). |
Beta Was this translation helpful? Give feedback.
-
OK _ I will plan an upgrade. Thank you for your feedback. |
Beta Was this translation helpful? Give feedback.
-
I would like to understand why a DEADLINE EXCEEDED would report that it ended earlier than the actual value.
For example, the grpc unary request has a deadline of 15s. But the deadline exceeded occurs after a lower value. For example:
2024-04-15T23:41:49.407Z <> {thread=thread-0} ERROR: CallEventType CALL_ENDED failed with status Status{code=DEADLINE_EXCEEDED, description=deadline exceeded after 11.539017198s. [closed=[], open=[[remote_addr=host/hostIp:443]]], cause=null}
io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 11.539017198s. [closed=[], open=[[remote_addr=host/hostIp.168:443]]]
2024-04-15T23:41:49.434Z <> {thread=thread-0} ERROR: CallEventType CALL_ENDED failed with status Status{code=DEADLINE_EXCEEDED, description=deadline exceeded after 6.302487311s. [closed=[], open=[[remote_addr=host/hostIp:443]]], cause=null}
io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 6.302487311s. [closed=[], open=[[remote_addr=host/hostIp:443]]]
And sometimes I do have a value close to what was requested:
2024-04-15T23:48:53.967Z <> {thread=thread-0} ERROR: CallEventType CALL_ENDED failed with status Status{code=DEADLINE_EXCEEDED, description=deadline exceeded after 13.288090524s. [closed=[], open=[[remote_addr=host/hostIp:443]]], cause=null}
io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 13.288090524s. [closed=[], open=[[remote_addr=host/hostIp:443]]]
2024-04-15T23:45:25.920Z <> {thread=thread-0} ERROR: CallEventType CALL_ENDED failed with status Status{code=DEADLINE_EXCEEDED, description=deadline exceeded after 14.999876625s. [closed=[UNAVAILABLE, UNAVAILABLE], open=[]], cause=null}
io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 14.999876625s. [closed=[UNAVAILABLE, UNAVAILABLE], open=[]]
I do have keepalives enabled. The rate is every 30s & a timeout of 15s. I did not capture any issue related to them.
Beta Was this translation helpful? Give feedback.
All reactions