On Wed, Jan 13, 2021 at 11:34:07AM +0100, William Dauchy wrote:
> On Wed, Jan 13, 2021 at 11:06 AM William Dauchy <[email protected]> wrote:
> I spend some time on it, trying to find a good explanation but it
> seems like I truly screw up. I probably overlooked the master worker
> test. So at the end forget my comment on the commit message, it seems
> like it never worked in master worker mode.
> 
> Sorry for that!

no worries, I've updated the commit message to mention your review.
thanks for your time reviewing the issue.
regards,
-- 
Jérôme
>From ca260ac46cd441ed4108cdef7b304b6c0baec68c Mon Sep 17 00:00:00 2001
From: Jerome Magnin <[email protected]>
Date: Tue, 12 Jan 2021 20:19:38 +0100
Subject: [PATCH] BUG/MINOR: init: enforce strict-limits when using
 master-worker

The strict-limits global option was introduced with commit 0fec3ab7b
("MINOR: init: always fail when setrlimit fails"). When used in
conjuction with master-worker, haproxy will not fail when a setrlimit
fails. This happens because we only exit() if master-worker isn't used.

This patch removes all tests for master-worker mode for all cases covered
by strict-limits scope.

This should be backported from 2.1 onward.
This should fix issue #1042.

Reviewed by William Dauchy <[email protected]>
---
 src/haproxy.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/src/haproxy.c b/src/haproxy.c
index fcc4f6c70..7612e4c45 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -3111,8 +3111,7 @@ int main(int argc, char **argv)
                        if (global.tune.options & GTUNE_STRICT_LIMITS) {
                                ha_alert("[%s.main()] Cannot raise FD limit to 
%d, limit is %d.\n",
                                         argv[0], global.rlimit_nofile, 
(int)limit.rlim_cur);
-                               if (!(global.mode & MODE_MWORKER))
-                                       exit(1);
+                               exit(1);
                        }
                        else {
                                /* try to set it to the max possible at least */
@@ -3135,8 +3134,7 @@ int main(int argc, char **argv)
                        if (global.tune.options & GTUNE_STRICT_LIMITS) {
                                ha_alert("[%s.main()] Cannot fix MEM limit to 
%d megs.\n",
                                         argv[0], global.rlimit_memmax);
-                               if (!(global.mode & MODE_MWORKER))
-                                       exit(1);
+                               exit(1);
                        }
                        else
                                ha_warning("[%s.main()] Cannot fix MEM limit to 
%d megs.\n",
@@ -3147,8 +3145,7 @@ int main(int argc, char **argv)
                        if (global.tune.options & GTUNE_STRICT_LIMITS) {
                                ha_alert("[%s.main()] Cannot fix MEM limit to 
%d megs.\n",
                                         argv[0], global.rlimit_memmax);
-                               if (!(global.mode & MODE_MWORKER))
-                                       exit(1);
+                               exit(1);
                        }
                        else
                                ha_warning("[%s.main()] Cannot fix MEM limit to 
%d megs.\n",
@@ -3320,8 +3317,7 @@ int main(int argc, char **argv)
                                 "Please raise 'ulimit-n' to %d or more to 
avoid any trouble.\n",
                                 argv[0], (int)limit.rlim_cur, global.maxconn, 
global.maxsock,
                                 global.maxsock);
-                       if (!(global.mode & MODE_MWORKER))
-                               exit(1);
+                       exit(1);
                }
                else
                        ha_alert("[%s.main()] FD limit (%d) too low for 
maxconn=%d/maxsock=%d. "
@@ -3608,8 +3604,7 @@ int main(int argc, char **argv)
                        if (global.tune.options & GTUNE_STRICT_LIMITS) {
                                ha_alert("[%s.main()] Failed to set the raise 
the maximum "
                                         "file size.\n", argv[0]);
-                               if (!(global.mode & MODE_MWORKER))
-                                       exit(1);
+                               exit(1);
                        }
                        else
                                ha_warning("[%s.main()] Failed to set the raise 
the maximum "
@@ -3622,8 +3617,7 @@ int main(int argc, char **argv)
                        if (global.tune.options & GTUNE_STRICT_LIMITS) {
                                ha_alert("[%s.main()] Failed to set the raise 
the core "
                                         "dump size.\n", argv[0]);
-                               if (!(global.mode & MODE_MWORKER))
-                                       exit(1);
+                               exit(1);
                        }
                        else
                                ha_warning("[%s.main()] Failed to set the raise 
the core "
-- 
2.30.0

Reply via email to