Version: 4.7.1
We are experiencing an issue where we have ServiceControl behind a reverse proxy (nginx) and every other request in a browser is failing. We think we have tracked it down to the api returning a non-zero Content-Length when it returns a 304. This is (probably?) incorrect behavior, and NGINX chokes on this and ends up returning a 504
A simulation in curl is below
curl --head -XGET http://servicecontrol.particular.svc.cluster.local:33333/api/recoverability/group/Endpoint%20Name?classifierFilter=email
HTTP/1.1 200 OK
Cache-Control: max-age=0, private
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
ETag: "2A524415-3AB3-3A99-98A8-D2B8EEAD4A91"
Vary: Accept
Server: Microsoft-HTTPAPI/2.0
X-Particular-Version: 4.7.1
Date: Wed, 21 Oct 2020 15:20:04 GMT
Now the cache hit....
curl --head -XGET --header 'If-None-Match: "2A524415-3AB3-3A99-98A8-D2B8EEAD4A91"' http://servicecontrol.particular.svc.cluster.local:33333/api/recoverability/groups/Endpoint%20Name?classifierFilter=email
HTTP/1.1 304 Not Modified
Cache-Control: max-age=0, private
Content-Length: 2
Content-Type: application/json; charset=utf-8
ETag: "2A524415-3AB3-3A99-98A8-D2B8EEAD4A91"
Vary: Accept
Server: Microsoft-HTTPAPI/2.0
X-Particular-Version: 4.7.1
Date: Wed, 21 Oct 2020 15:21:33 GMT
Note the Content-Length: 2
The best I can tell, there is, in fact, no body
Here is that again, with full --verbose on
curl --verbose --header 'If-None-Match: "2A524415-3AB3-3A99-98A8-D2B8EEAD4A91"' http://servicecontrol.particular.svc.cluster.local:33333/api/recoverability/groups/Endpoint%20Name?classifierFilter=email
output
* Expire in 0 ms for 6 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 0 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 1 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 2 ms for 1 (transfer 0x561b2737ff50)
* Expire in 4 ms for 1 (transfer 0x561b2737ff50)
* Expire in 3 ms for 1 (transfer 0x561b2737ff50)
* Expire in 3 ms for 1 (transfer 0x561b2737ff50)
* Expire in 4 ms for 1 (transfer 0x561b2737ff50)
* Expire in 4 ms for 1 (transfer 0x561b2737ff50)
* Expire in 4 ms for 1 (transfer 0x561b2737ff50)
* Expire in 4 ms for 1 (transfer 0x561b2737ff50)
* Expire in 5 ms for 1 (transfer 0x561b2737ff50)
* Expire in 5 ms for 1 (transfer 0x561b2737ff50)
* Expire in 4 ms for 1 (transfer 0x561b2737ff50)
* Expire in 6 ms for 1 (transfer 0x561b2737ff50)
* Expire in 6 ms for 1 (transfer 0x561b2737ff50)
* Expire in 8 ms for 1 (transfer 0x561b2737ff50)
* Expire in 7 ms for 1 (transfer 0x561b2737ff50)
* Expire in 7 ms for 1 (transfer 0x561b2737ff50)
* Expire in 8 ms for 1 (transfer 0x561b2737ff50)
* Expire in 8 ms for 1 (transfer 0x561b2737ff50)
* Expire in 8 ms for 1 (transfer 0x561b2737ff50)
* Expire in 16 ms for 1 (transfer 0x561b2737ff50)
* Expire in 10 ms for 1 (transfer 0x561b2737ff50)
* Expire in 10 ms for 1 (transfer 0x561b2737ff50)
* Expire in 16 ms for 1 (transfer 0x561b2737ff50)
* Expire in 14 ms for 1 (transfer 0x561b2737ff50)
* Expire in 14 ms for 1 (transfer 0x561b2737ff50)
* Expire in 50 ms for 1 (transfer 0x561b2737ff50)
* Trying 172.21.169.149...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x561b2737ff50)
* Connected to servicecontrol.particular.svc.cluster.local (172.21.169.149) port 33333 (#0)
> GET /api/recoverability/groups/Endpoint%20Name?classifierFilter=email HTTP/1.1
> Host: servicecontrol.particular.svc.cluster.local:33333
> User-Agent: curl/7.64.0
> Accept: */*
> If-None-Match: "2A524415-3AB3-3A99-98A8-D2B8EEAD4A91"
>
< HTTP/1.1 304 Not Modified
< Cache-Control: max-age=0, private
< Content-Length: 2
< Content-Type: application/json; charset=utf-8
< ETag: "2A524415-3AB3-3A99-98A8-D2B8EEAD4A91"
< Vary: Accept
< Server: Microsoft-HTTPAPI/2.0
< X-Particular-Version: 4.7.1
< Date: Wed, 21 Oct 2020 15:30:45 GMT
<
* Excess found in a non pipelined read: excess = 2 url = /api/recoverability/groups/Endpoint%20Name (zero-length body)
* Connection #0 to host servicecontrol.particular.svc.cluster.local left intact
It even throws curl off a bit
Excess found in a non pipelined read: excess = 2
Version: 4.7.1
We are experiencing an issue where we have ServiceControl behind a reverse proxy (nginx) and every other request in a browser is failing. We think we have tracked it down to the api returning a non-zero Content-Length when it returns a 304. This is (probably?) incorrect behavior, and NGINX chokes on this and ends up returning a 504
A simulation in curl is below
Now the cache hit....
Note the Content-Length: 2
The best I can tell, there is, in fact, no body
Here is that again, with full --verbose on
output
It even throws curl off a bit
Excess found in a non pipelined read: excess = 2