Add Error Handling for Canceled Contexts during request lifecycle
gabizou opened this issue · 3 comments
gabizou commented
What would you like?
Various lifecycle steps can cancel a context.Context
, but it would be the responsibility of each consumer to verify the context isn't canceled. It would be great to add:
for _, f := range s.before {
ctx = f(ctx, r)
if ctx.Err() == context.Canceled {
err := context.Cause(ctx)
s.errorHandler.Handle(ctx, err)
s.errorEncoder(ctx, err, w)
return
}
}
request, err := s.dec(ctx, r)
if err != nil {
s.errorHandler.Handle(ctx, err)
s.errorEncoder(ctx, err, w)
return
}
peterbourgon commented
it would be the responsibility of each consumer to verify the context isn't canceled
This is already the case -- consumers must always inspect the received context, and return if it is finished.
gabizou commented
That's fair, but would it make sense to treat the Server as a consumer of the context and "bail" if the context is finished early?
omrihq commented
@peterbourgon I'm curious if there's been any updates here? I'm running into this issue myself and wondering if we could bake cancellation if ctx.Err() == context.Canceled
into the request lifecycle.
Thank you!