summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2018-03-14 23:24:49 +0100
committerGitHub <noreply@github.com>2018-03-14 23:24:49 +0100
commit51ac92ea47ae2ae43675e57185984f7fd57e07f1 (patch)
treef823e2bdf2bd6dc4f92c1a08ae3d603708bba576
parent1f043d69e2b017150bf49d80f01ce20143890344 (diff)
downloadbugzilla-51ac92ea47ae2ae43675e57185984f7fd57e07f1.tar.gz
bugzilla-51ac92ea47ae2ae43675e57185984f7fd57e07f1.tar.xz
Bug 1445700 - apache_size_limit should be 800_000 when Linux::Smaps is not installed.
-rw-r--r--.circleci/config.yml2
-rw-r--r--Dockerfile2
-rwxr-xr-xMakefile.PL60
-rw-r--r--mod_perl.pl6
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);