Timeouts

EnRoute Technical Reference

EnRoute timeout options allow accurately controlling different timeouts involved in traffic routing.

Timeouts can be specified at the Route level, both for GatewayHost and ServiceRoute

Through a TimeoutPolicy specified in Route, several different types of Timeouts can be configured

Request Timeout

This timeout can be used to specify the upstream timeout for the route. This spans between the point at which the entire downstream request (i.e. end-of-stream) has been processed and when the upstream response has been completely processed. A value of 0 will disable the route’s timeout.

Idle Timeout

Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout. A value of 0 will completely disable the route’s idle timeout

The idle timeout determines the amount of time the request’s stream may be idle.

Cluster Idle Timeout

The idle timeout for connections going through to the service. The idle timeout is defined as the period in which there are no active requests. When the idle timeout is reached the connection will be closed.

To disable idle timeouts explicitly set this to 0.

Cluster Connect Timeout

The timeout for new network connections to hosts. If not set, a default value of 5s will be used

Cluster Max Connection Duration

The maximum duration of a connection. The duration is defined as a period since a connection was established. If not set, there is no max duration. When max_connection_duration is reached and if there are no active streams, the connection will be closed.

Example

Here is an example that sets timeouts for a Route in GatewayHost. Timeouts for a Route in ServiceRoute can be set the same way

apiVersion: enroute.saaras.io/v1
kind: GatewayHost
  labels:
    app: httpbin
  name: httpbin-9000-gatewayhost-httpbin-host
  namespace: httpbin
spec:
  routes:
  - conditions:
    - prefix: /get
    services:
    - name: httpbin
      port: 9000
    timeoutPolicy:
      cluster_connect: 10s
      cluster_idle: 64s
      cluster_max_duration: 1024s
      idle: 64s
      request: 32s
  virtualhost:
    fqdn: '*'