]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: poll: fix abnormally high skip_fd counter
authorWilly Tarreau <w@1wt.eu>
Fri, 30 Jul 2021 12:04:28 +0000 (14:04 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 30 Jul 2021 12:04:28 +0000 (14:04 +0200)
The skip_fd counter that is incremented when a migrated FD is reported
was abnormally high in with poll. The reason is that it was accounted
for before preparing the polled events instead of being measured from
the reported events.

This mistake was done when the counters were introduced in 1.9 with
commit d80cb4ee1 ("MINOR: global: add some global activity counters to
help debugging"). It may be backported as far as 2.0.

src/ev_poll.c

index f973d08bcddf978cfecebc1a5e2acbe1626ed754..a84fa608fcf9279e162578efb9ae325c7af533e2 100644 (file)
@@ -188,7 +188,6 @@ static void _do_poll(struct poller *p, int exp, int wake)
                                }
 
                                if (!(fdtab[fd].thread_mask & tid_bit)) {
-                                       activity[tid].poll_skip_fd++;
                                        continue;
                                }
 
@@ -233,6 +232,11 @@ static void _do_poll(struct poller *p, int exp, int wake)
                        continue;
                }
 
+               if (!(fdtab[fd].thread_mask & tid_bit)) {
+                       activity[tid].poll_skip_fd++;
+                       continue;
+               }
+
                n = ((e & POLLIN)    ? FD_EV_READY_R : 0) |
                    ((e & POLLOUT)   ? FD_EV_READY_W : 0) |
                    ((e & POLLRDHUP) ? FD_EV_SHUT_R  : 0) |