BUG/MINOR: init: enforce strict-limits when using master-worker
authorJerome Magnin <jerome@layaute.net>
Tue, 12 Jan 2021 19:19:38 +0000 (20:19 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 26 Jan 2021 11:07:46 +0000 (12:07 +0100)
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 <wdauchy@gmail.com>

(cherry picked from commit 50f757c5fdd7e6eb404103d878f648453d00d73e)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 4b1148f4fe80ee79705b9b56addf15325469c6ca)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit f1deb0aef0dda223951c02cece35f7b785f701cc)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>

src/haproxy.c

index 7576ca8..7ce80a1 100644 (file)
@@ -3104,8 +3104,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 */
@@ -3129,8 +3128,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."
@@ -3142,8 +3140,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."
@@ -3328,8 +3325,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. "
@@ -3611,8 +3607,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 "
@@ -3625,8 +3620,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 "