From 51ac92ea47ae2ae43675e57185984f7fd57e07f1 Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Wed, 14 Mar 2018 18:24:49 -0400 Subject: Bug 1445700 - apache_size_limit should be 800_000 when Linux::Smaps is not installed. --- .circleci/config.yml | 2 +- Dockerfile | 2 +- Makefile.PL | 60 +++++++++++++++++++++++++++++++--------------------- mod_perl.pl | 6 ++++-- 4 files changed, 42 insertions(+), 28 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7d9cfdfde..48899d254 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,7 +16,7 @@ main_filters: &main_filters defaults: bmo_slim_image: &bmo_slim_image - image: mozillabteam/bmo-slim:20180313.1 + image: mozillabteam/bmo-slim:20180314.1 user: app mysql_image: &mysql_image diff --git a/Dockerfile b/Dockerfile index d367a80d4..056c8185a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM mozillabteam/bmo-slim:20180313.1 +FROM mozillabteam/bmo-slim:20180314.1 ARG CI ARG CIRCLE_SHA1 diff --git a/Makefile.PL b/Makefile.PL index d7c359bf0..ceb0fc97c 100755 --- a/Makefile.PL +++ b/Makefile.PL @@ -95,19 +95,13 @@ if ( $OSNAME eq 'MSWin32' ) { $requires{'DateTime::TimeZone::Local::Win32'} = '1.64'; } -if ( $OSNAME eq 'linux' ) { - # This isn't strictly needed, but it is nice to have. - # we use it to make sure jobqueue-workers exit when their parent exits. - my @extra = qw(Linux::Pdeathsig); - - # for some reason, we need these on ubuntu. - push @extra, qw( - Linux::Pid +if ( $OSNAME eq 'linux' && -f '/etc/debian_version' ) { + my @extra = qw( Test::Pod::Coverage Pod::Coverage::TrustPod Test::CPAN::Meta Test::Pod - ) if -f '/etc/debian_version'; + ); $requires{$_} = 0 for @extra; } @@ -315,6 +309,22 @@ my %optional_features = ( }, }, }, + linux_smaps => { + description => 'Linux::Smaps for limiting memory usage', + prereqs => { + runtime => { + requires => { 'Linux::Smaps' => '0' }, + } + }, + }, + linux_pdeath => { + description => 'Linux::Pdeathsig for a good parent/child relationships', + prereqs => { + runtime => { + requires => { 'Linux::Pdeathsig' => 0 }, + }, + }, + }, jobqueue => { description => 'Mail Queueing', prereqs => { @@ -362,21 +372,7 @@ for my $file ( glob 'extensions/*/Config.pm' ) { } # BMO Customization -my @bmo_features = grep { - !m{ - ^ - (?: pg - | oracle - | mod_perl - | sqlite - | auth_ldap - | auth_radius - | smtp_auth - | linux_pid - | updates) - $ - }mxs; -} keys %optional_features; +my @bmo_features = grep { is_bmo_feature($_) } keys %optional_features; $optional_features{bmo} = { description => 'features that bmo needs', @@ -427,3 +423,19 @@ META.yml: Makefile.PL MAKE } +sub is_bmo_feature { + local $_ = shift; + return 1 if $OSNAME eq 'linux' && /^linux/; + return !m{ + ^ + (?: pg + | oracle + | mod_perl + | sqlite + | auth_ldap + | auth_radius + | smtp_auth + | updates) + $ + }mxs; +} diff --git a/mod_perl.pl b/mod_perl.pl index 09fd80850..73406be56 100644 --- a/mod_perl.pl +++ b/mod_perl.pl @@ -55,6 +55,7 @@ use Apache2::SizeLimit; use ModPerl::RegistryLoader (); use File::Basename (); use File::Find (); +use English qw(-no_match_vars $OSNAME); # This loads most of our modules. use Bugzilla (); @@ -78,8 +79,9 @@ Bugzilla::CGI->compile(qw(:cgi :push)); # is taking up more than $apache_size_limit of RAM all by itself, not counting RAM it is # sharing with the other httpd processes. my $limit = Bugzilla->localconfig->{apache_size_limit}; -if ($limit < 400_000) { - $limit = 400_000; +if ($OSNAME eq 'linux' && ! eval { require Linux::Smaps }) { + warn "SizeLimit requires Linux::Smaps on linux. size limit set to 800MB"; + $limit = 800_000; } Apache2::SizeLimit->set_max_unshared_size($limit); -- cgit v1.2.3-24-g4f1b