Here is a better trace of the success and failure scenarios,
with messages flushed in the proper order
and socket creation and close events included.

The difference in the success and failure is that
the second reconnecting client fd=0009 ends up in state en=22
on the success scenario and is  eventually re-added to the poll.

In the failure scenario, fd=0009 ends up in state en=20 and is never
re-polled after its associated server (000b) is connected.




Success
=======

root@ip-172-31-31-59:/home/admin/src/haproxy-1.6.7# ./haproxy -f 
/etc/haproxy/haproxy.cfg
[WARNING] 201/190425 (32358) : <debug> mode incompatible with <quiet>, <daemon> and 
<systemd>. Keeping <debug> only.
Available polling systems :
      epoll : pref=300,  test result OK
       poll : pref=200,  test result OK
     select : pref=150,  test result FAILED
Total: 3 (2 usable), will use epoll.
Using epoll() as the polling mechanism.
epoll_ctl: op=1, fd=0004 ev=2001, eo=01, en=05
epoll_ctl: op=1, fd=0005 ev=2001, eo=01, en=05
epoll_ctl: op=1, fd=0007 ev=2001, eo=01, en=05
== do_poll ==
00000000:test_og_in.accept(0007)=0008 from [10.59.159.20:54316]
create_server_socket: fd=0009
epoll_ctl: op=1, fd=0008 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=1, fd=0009 ev=4, eo=12, en=52
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=61, en=25
== do_poll ==
00000001:test_og_in.accept(0007)=000a from [10.59.159.20:54317]
create_server_socket: fd=000b
epoll_ctl: op=1, fd=000a ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=1, fd=000b ev=4, eo=12, en=52
== do_poll ==
epoll_ctl: op=2, fd=000b ev=0, eo=63, en=23
== do_poll ==
epoll_ctl: op=1, fd=000b ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=2, fd=000b ev=0, eo=26, en=22
epoll_ctl: op=2, fd=0009 ev=0, eo=26, en=22
== do_poll ==
close: fd=0009
close: fd=0008
00000000:test_og.srvcls[0008:0009]
00000000:test_og.clicls[0008:0009]
00000000:test_og.closed[0008:0009]
close: fd=000b
close: fd=000a
00000001:test_og.srvcls[000a:000b]
00000001:test_og.clicls[000a:000b]
00000001:test_og.closed[000a:000b]
00000002:test_og_in.accept(0007)=0008 from [10.59.159.20:54319]
create_server_socket: fd=0009
epoll_ctl: op=1, fd=0008 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=1, fd=0009 ev=4, eo=12, en=52
== do_poll ==
close: fd=0009
00000003:test_og_in.accept(0007)=0009 from [10.59.159.20:54320]
create_server_socket: fd=000a
epoll_ctl: op=1, fd=0009 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
epoll_ctl: op=2, fd=0009 ev=0, eo=26, en=22
== do_poll ==
epoll_ctl: op=2, fd=0008 ev=0, eo=26, en=22
== do_poll ==
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
epoll_ctl: op=1, fd=0008 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=3, fd=000a ev=2005, eo=51, en=55
== do_poll ==
epoll_ctl: op=3, fd=000a ev=2001, eo=65, en=25
== do_poll ==
create_server_socket: fd=000b
epoll_ctl: op=1, fd=000b ev=4, eo=12, en=52
== do_poll ==
epoll_ctl: op=1, fd=0009 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2005, eo=51, en=55
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2001, eo=65, en=25
== do_poll ==
^C


Failure
========
root@ip-172-31-31-59:/home/admin/src/haproxy-1.6.7# ./haproxy -f 
/etc/haproxy/haproxy.cfg
[WARNING] 201/185844 (32353) : <debug> mode incompatible with <quiet>, <daemon> and 
<systemd>. Keeping <debug> only.
Available polling systems :
      epoll : pref=300,  test result OK
       poll : pref=200,  test result OK
     select : pref=150,  test result FAILED
Total: 3 (2 usable), will use epoll.
Using epoll() as the polling mechanism.
epoll_ctl: op=1, fd=0004 ev=2001, eo=01, en=05
epoll_ctl: op=1, fd=0005 ev=2001, eo=01, en=05
epoll_ctl: op=1, fd=0007 ev=2001, eo=01, en=05
== do_poll ==
00000000:test_og_in.accept(0007)=0008 from [10.59.159.20:54268]
create_server_socket: fd=0009
epoll_ctl: op=1, fd=0008 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=1, fd=0009 ev=4, eo=12, en=52
== do_poll ==
epoll_ctl: op=2, fd=0009 ev=0, eo=63, en=23
== do_poll ==
epoll_ctl: op=1, fd=0009 ev=2001, eo=21, en=25
== do_poll ==
00000001:test_og_in.accept(0007)=000a from [10.59.159.20:54269]
create_server_socket: fd=000b
epoll_ctl: op=1, fd=000a ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=1, fd=000b ev=4, eo=12, en=52
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2001, eo=61, en=25
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2005, eo=15, en=55
== do_poll ==
epoll_ctl: op=3, fd=0009 ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=3, fd=000b ev=2001, eo=65, en=25
== do_poll ==
epoll_ctl: op=2, fd=000b ev=0, eo=26, en=22
== do_poll ==
epoll_ctl: op=2, fd=0009 ev=0, eo=26, en=22
== do_poll ==
close: fd=0009
close: fd=0008
00000000:test_og.srvcls[0008:0009]
00000000:test_og.clicls[0008:0009]
00000000:test_og.closed[0008:0009]
close: fd=000b
close: fd=000a
00000001:test_og.srvcls[000a:000b]
00000001:test_og.clicls[000a:000b]
00000001:test_og.closed[000a:000b]
00000002:test_og_in.accept(0007)=0008 from [10.59.159.20:54276]
create_server_socket: fd=0009
epoll_ctl: op=1, fd=0008 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=1, fd=0009 ev=4, eo=12, en=52
== do_poll ==
close: fd=0009
00000003:test_og_in.accept(0007)=0009 from [10.59.159.20:54277]
create_server_socket: fd=000a
epoll_ctl: op=1, fd=0009 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
epoll_ctl: op=2, fd=0009 ev=0, eo=24, en=20
== do_poll ==
epoll_ctl: op=2, fd=0008 ev=0, eo=26, en=22
== do_poll ==
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
close: fd=000a
create_server_socket: fd=000a
epoll_ctl: op=1, fd=000a ev=4, eo=12, en=52
== do_poll ==
epoll_ctl: op=1, fd=0008 ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=3, fd=000a ev=2005, eo=51, en=55
== do_poll ==
epoll_ctl: op=3, fd=000a ev=2001, eo=65, en=25
== do_poll ==
create_server_socket: fd=000b
epoll_ctl: op=1, fd=000b ev=4, eo=12, en=52
== do_poll ==
epoll_ctl: op=2, fd=000b ev=0, eo=63, en=23
== do_poll ==
epoll_ctl: op=1, fd=000b ev=2001, eo=21, en=25
== do_poll ==
epoll_ctl: op=2, fd=0008 ev=0, eo=26, en=22
== do_poll ==
close: fd=000a
close: fd=0008
00000002:test_og.srvcls[0008:000a]
00000002:test_og.clicls[0008:000a]
00000002:test_og.closed[0008:000a]


Reply via email to