Add a timeout getter to HandlerContext and export createHandlerContext #632
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Following #591, this adds a method
timeoutMs()
to the handler context for true deadline propagation:This is an alternative to passing
ctx.signal
to upstream client calls. Passingctx.signal
works for any operation you might want to call (as long as the API supports it). For RPC calls, passing the timeout is preferable because it is more efficient and robust - you have a guarantee that the peer is aware of the deadline, regardless of network issues.We now also export
createHandlerContext()
from@bufbuild/connect
. If you want to run unit tests against your service implementations, you now have a convenient function to create aHandlerContext
if your services rely on it.This PR also enables the test case
cancel_after_first_response
, refactors the code for deadlines so that it can be used on the client-side in a follow-up, and adds more test coverage