Skip to content

Context Timeout

ContextTimeout wraps the request context with a deadline before the rest of the chain runs.

app.Use(middleware.ContextTimeout(2 * time.Second))
Field Meaning
Skipper Skip timeout handling for selected requests
Timeout Required timeout duration
ErrorHandler Customize timeout failures
info, ok := middleware.ContextTimeoutCurrent(c)
remaining, ok := middleware.ContextTimeoutRemaining(c)

ContextTimeoutInfo contains:

  • Timeout
  • Deadline

If the handler chain returns context.DeadlineExceeded, Zinc wraps it in *middleware.ContextTimeoutError.

The default error handler returns 503 Service Unavailable joined with the timeout error.

app.Use(middleware.ContextTimeoutWithConfig(middleware.ContextTimeoutConfig{
Timeout: 2 * time.Second,
ErrorHandler: func(c *zinc.Context, err *middleware.ContextTimeoutError) error {
return zinc.ErrServiceUnavailable.WithMessage("request timed out")
},
}))