Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.

Bug 1360243

Summary: [networking_public_55]Timeout server doesn't work for passthough route
Product: OKD Reporter: Yan Du <yadu>
Component: RoutingAssignee: jtanenba
Status: CLOSED CURRENTRELEASE QA Contact: zhaozhanqi <zzhao>
Severity: medium Docs Contact:
Priority: medium    
Version: 3.xCC: aos-bugs, bbennett, jtanenba, xtian
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-09-19 13:50:46 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Yan Du 2016-07-26 10:24:59 UTC
Description of problem:
Timeout server doesn't work for passthough route


Version-Release number of selected component (if applicable):
openshift v1.3.0-alpha.2+0369166
kubernetes v1.3.0+57fb9ac
etcd 2.3.0+git
openshift/origin-haproxy-router:latest       959439930ca4


How reproducible:
Always


Steps to Reproduce:
1. Create pod/service 
# cat httpbin-pod.json 
{
  "kind": "Pod",
  "apiVersion":"v1",

  "metadata": {
        "name": "httpbin-pod",
        "labels": {
                "name": "httpbin-pod"
        }
  },
  "spec": {
      "containers": [{
        "name": "httpbin-pod",
        "image": "yadu/httpbin",
        "ports": [
          {
            "containerPort": 8080
          },
          {
            "containerPort": 8443
          }
        ]
      }]
  }
}
# cat service_secure.json 
{
    "kind": "Service",
    "apiVersion": "v1",
    "metadata": {
        "name": "service-secure"
    },
    "spec": {
        "ports": [
        {
            "name": "https",
            "protocol": "TCP",
            "port": 27443,
            "targetPort": 8443
        }
        ],
        "selector": {
                "name": "httpbin-pod"
            }
    }
}

2. Create passthough route
#oc create route passthrough myroute --service=service-secure --hostname=duyan-pass.example.com

3. Config the timeout for the route to 2s
oc annotate route myroute --overwrite router.openshift.io/haproxy.timeout=2s

4. oc rsh router-pod and check the haproxy.config

5. Test the timeout time by accessing a page which timeout is 5s
eg: https://duyan-pass.example.com/delay/5



Actually results:

step4: timeout server show correctly as we set
backend be_tcp_p1_myroute
    
  balance source

  timeout server  2s

  hash-type consistent
  timeout check 5000ms

  server 172.17.0.3:8443 172.17.0.3:8443 check inter 5000ms weight 100


step5: the timeout server we set doesn't work
# curl https://duyan-pass.example.com/delay/5 -k
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Host": "duyan-pass.example.com", 
    "User-Agent": "curl/7.29.0"
  }, 
  "origin": "172.17.0.1", 
  "url": "https://duyan-pass.example.com/delay/5"
}



Expected results:
step5: Should return 504 as below:
<html><body><h1>504 Gateway Time-out</h1>
The server didn't respond in time.



Additional info
Timeout work for unsecure/edge/reencrypt route normally, only not work for passthough route

Comment 2 Yan Du 2016-08-15 05:42:29 UTC
Test on latest origin env. Issue have been fixed.

openshift v1.3.0-alpha.3+69c7837
kubernetes v1.3.0+507d3a7
etcd 2.3.0+git
openshift/origin-haproxy-router  5f44d676581d


backend be_tcp_d1_myroute   
  balance source              
  timeout tunnel  2s

# curl https://duyan-pass.example.com/delay/5 -k
curl: (52) Empty reply from server