Re: regression in 1.6.13 - wrong http status in logs and stats

2017-07-12 Thread Willy Tarreau
Hi Michal,

On Wed, Jul 12, 2017 at 04:06:16PM +0200, Michal Pasierb wrote:
> Hi,
> 
> I would like to report a regression in HAProxy 1.6.13 after upgrading from
> 1.6.9 in production :(
> 
> Reproduce with config:
> 
> ---
> global
>   log 127.0.0.1   local0
>   log 127.0.0.1   local1 notice
>   maxconn 4096
>   chroot /usr/share/haproxy
>   uid 99
>   gid 99
>   daemon
> 
> defaults
>   log global
>   mode http
>   option httplog
>   option dontlognull
>   option redispatch
>   stats enable
>   stats refresh 5s
>   timeout connect 5s
>   timeout client  30s
>   timeout server  30s
>   balance roundrobin
>   option forwardfor
> 
> listen Statistics
>   bind 192.168.122.202:
>   mode http
>   stats refresh 5s
>   stats uri /
> 
> frontend http-in
>   bind 192.168.122.202:9000
> 
>   acl is_root_path  path /
>   redirect location /my_custom_page if is_root_path
> 
> backend nomatch
>   redirect location http://www.google.com
> ---
> 
> Send a request with curl -v 192.168.122.202:9000/ - response is OK and has
> status code 302 but logs and statistics have 503 instead:
> 
> 192.168.122.202:37880 [12/Jul/2017:15:54:49.573] http-in http-in/
> 0/-1/-1/-1/2 503 305 - - LR-- 0/0/0/0/0 0/0 "GET / HTTP/1.1"
> 
> git bisect shows this commit to be the culprit:
> 
> commit b12d699543adb84fa543297d12b64fce7ec94803
> Author: Christopher Faulet 
> Date:   Tue Mar 28 11:51:33 2017 +0200
> 
> BUG/MINOR: http: Fix conditions to clean up a txn and to handle the
> next request
> 
> I also tested 1.7.8 and 1.8-dev2 - they are OK. So it seems it is a
> backport issue.

I know what caused this, indeed a fix was backported and had this side
effect. I can produce a new version with a backport of the latest fix
that went into 1.7.8. Sorry for the mess :-(

Willy



regression in 1.6.13 - wrong http status in logs and stats

2017-07-12 Thread MichaƂ Pasierb
Hi,

I would like to report a regression in HAProxy 1.6.13 after upgrading from
1.6.9 in production :(

Reproduce with config:

---
global
  log 127.0.0.1   local0
  log 127.0.0.1   local1 notice
  maxconn 4096
  chroot /usr/share/haproxy
  uid 99
  gid 99
  daemon

defaults
  log global
  mode http
  option httplog
  option dontlognull
  option redispatch
  stats enable
  stats refresh 5s
  timeout connect 5s
  timeout client  30s
  timeout server  30s
  balance roundrobin
  option forwardfor

listen Statistics
  bind 192.168.122.202:
  mode http
  stats refresh 5s
  stats uri /

frontend http-in
  bind 192.168.122.202:9000

  acl is_root_path  path /
  redirect location /my_custom_page if is_root_path

backend nomatch
  redirect location http://www.google.com
---

Send a request with curl -v 192.168.122.202:9000/ - response is OK and has
status code 302 but logs and statistics have 503 instead:

192.168.122.202:37880 [12/Jul/2017:15:54:49.573] http-in http-in/
0/-1/-1/-1/2 503 305 - - LR-- 0/0/0/0/0 0/0 "GET / HTTP/1.1"

git bisect shows this commit to be the culprit:

commit b12d699543adb84fa543297d12b64fce7ec94803
Author: Christopher Faulet 
Date:   Tue Mar 28 11:51:33 2017 +0200

BUG/MINOR: http: Fix conditions to clean up a txn and to handle the
next request

I also tested 1.7.8 and 1.8-dev2 - they are OK. So it seems it is a
backport issue.

Regards,
Michal