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.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
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