Class TimeoutHttpServiceFilter

java.lang.Object
io.servicetalk.http.utils.TimeoutHttpServiceFilter
All Implemented Interfaces:
HttpExecutionStrategyInfluencer, StreamingHttpServiceFilterFactory, ExecutionStrategyInfluencer<HttpExecutionStrategy>

public final class TimeoutHttpServiceFilter extends Object implements StreamingHttpServiceFilterFactory
A filter to enable timeouts for HTTP requests on the server-side.

The timeout applies either the response metadata (headers) completion or the complete reception of the response payload body and optional trailers.

If no executor is specified at construction an executor from HttpExecutionContext associated with the client or connection will be used. If the HttpExecutionContext.executionStrategy() specifies an HttpExecutionStrategy with offloads then ExecutionContext.executor() will be used and if no offloads are specified then ExecutionContext.ioExecutor() will be used.

The order with which this filter is applied may be highly significant. For example, appending it before a retry filter would have different results than applying it after the retry filter; timeout would apply for all retries vs timeout per retry.

  • Constructor Details

    • TimeoutHttpServiceFilter

      public TimeoutHttpServiceFilter(Duration duration)
      Creates a new instance which requires only that the response metadata be received before the timeout.
      Parameters:
      duration - the timeout Duration, must be > 0
    • TimeoutHttpServiceFilter

      public TimeoutHttpServiceFilter(Duration duration, Executor timeoutExecutor)
      Creates a new instance which requires only that the response metadata be received before the timeout.
      Parameters:
      duration - the timeout Duration, must be > 0
      timeoutExecutor - the Executor to use for managing the timer notifications
    • TimeoutHttpServiceFilter

      public TimeoutHttpServiceFilter(Duration duration, boolean fullRequestResponse)
      Creates a new instance.
      Parameters:
      duration - the timeout Duration, must be > 0
      fullRequestResponse - if true then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeout
    • TimeoutHttpServiceFilter

      public TimeoutHttpServiceFilter(Duration duration, boolean fullRequestResponse, Executor timeoutExecutor)
      Creates a new instance.
      Parameters:
      duration - the timeout Duration, must be > 0
      fullRequestResponse - if true then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeout
      timeoutExecutor - the Executor to use for managing the timer notifications
    • TimeoutHttpServiceFilter

      @Deprecated public TimeoutHttpServiceFilter(TimeoutFromRequest timeoutForRequest, boolean fullRequestResponse)
      Creates a new instance.
      Parameters:
      timeoutForRequest - function for extracting timeout from request which may also determine the timeout using other sources. If no timeout is to be applied then the function should return null
      fullRequestResponse - if true then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeout
    • TimeoutHttpServiceFilter

      public TimeoutHttpServiceFilter(BiFunction<HttpRequestMetaData,TimeSource,Duration> timeoutForRequest, boolean fullRequestResponse)
      Creates a new instance.
      Parameters:
      timeoutForRequest - function for extracting timeout from request which may also determine the timeout using other sources. If no timeout is to be applied then the function should return null
      fullRequestResponse - if true then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeout
    • TimeoutHttpServiceFilter

      @Deprecated public TimeoutHttpServiceFilter(TimeoutFromRequest timeoutForRequest, boolean fullRequestResponse, Executor timeoutExecutor)
      Creates a new instance.
      Parameters:
      timeoutForRequest - function for extracting timeout from request which may also determine the timeout using other sources. If no timeout is to be applied then the function should return null
      fullRequestResponse - if true then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeout
      timeoutExecutor - the Executor to use for managing the timer notifications
    • TimeoutHttpServiceFilter

      public TimeoutHttpServiceFilter(BiFunction<HttpRequestMetaData,TimeSource,Duration> timeoutForRequest, boolean fullRequestResponse, Executor timeoutExecutor)
      Creates a new instance.
      Parameters:
      timeoutForRequest - function for extracting timeout from request which may also determine the timeout using other sources. If no timeout is to be applied then the function should return null
      fullRequestResponse - if true then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeout
      timeoutExecutor - the Executor to use for managing the timer notifications
  • Method Details