You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2021/05/02 09:04:05 UTC
svn commit: r1889393 - in /spamassassin/trunk:
lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm t/all_modules.t t/debug.t
Author: hege
Date: Sun May 2 09:04:05 2021
New Revision: 1889393
URL: http://svn.apache.org/viewvc?rev=1889393&view=rev
Log:
Tidy up ResourceLimits
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm
spamassassin/trunk/t/all_modules.t
spamassassin/trunk/t/debug.t
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm?rev=1889393&r1=1889392&r2=1889393&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm Sun May 2 09:04:05 2021
@@ -42,11 +42,11 @@ NOTE: Because this plugin uses BSD::Reso
=over 4
-=item resource_limit_cpu 120 (default: 0 or no limit)
+=item resource_limit_cpu 120 (default: 0 or no limit)
How many cpu cycles are allowed on this process before it dies.
-=item resource_limit_mem 536870912 (default: 0 or no limit)
+=item resource_limit_mem 536870912 (default: 0 or no limit)
The maximum number of bytes of memory allowed both for:
@@ -68,77 +68,80 @@ resident set size
package Mail::SpamAssassin::Plugin::ResourceLimits;
-use Mail::SpamAssassin::Plugin ();
-use Mail::SpamAssassin::Logger ();
-use Mail::SpamAssassin::Util ();
-use Mail::SpamAssassin::Constants qw(:sa);
+use Mail::SpamAssassin::Plugin;
+use Mail::SpamAssassin::Logger;
use strict;
use warnings;
use re 'taint';
-use BSD::Resource qw(RLIMIT_RSS RLIMIT_AS RLIMIT_CPU);
+use constant HAS_BSD_RESOURCE =>
+ eval 'use BSD::Resource qw(RLIMIT_CPU RLIMIT_RSS RLIMIT_AS); 1;';
our @ISA = qw(Mail::SpamAssassin::Plugin);
sub new {
- my $class = shift;
- my $mailsaobject = shift;
+ my $class = shift;
+ my $mailsaobject = shift;
- $class = ref($class) || $class;
- my $self = $class->SUPER::new($mailsaobject);
- bless( $self, $class );
+ $class = ref($class) || $class;
+ my $self = $class->SUPER::new($mailsaobject);
+ bless ($self, $class);
+
+ if (!HAS_BSD_RESOURCE) {
+ warn "ResourceLimits not used, required module BSD::Resource missing\n";
+ }
- $self->set_config( $mailsaobject->{conf} );
- return $self;
+ $self->set_config($mailsaobject->{conf});
+ return $self;
}
sub set_config {
- my ( $self, $conf ) = @_;
- my @cmds = ();
+ my ($self, $conf) = @_;
+ my @cmds;
- push(
- @cmds,
- {
- setting => 'resource_limit_mem',
- is_admin => 1,
- default => '0',
- type => $Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC
- }
- );
-
- push(
- @cmds,
- {
- setting => 'resource_limit_cpu',
- is_admin => 1,
- default => '0',
- type => $Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC
- }
- );
+ push(@cmds, {
+ setting => 'resource_limit_mem',
+ is_admin => 1,
+ default => 0,
+ type => $Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC
+ });
+
+ push(@cmds, {
+ setting => 'resource_limit_cpu',
+ is_admin => 1,
+ default => 0,
+ type => $Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC
+ });
- $conf->{parser}->register_commands( \@cmds );
+ $conf->{parser}->register_commands(\@cmds);
}
+if (HAS_BSD_RESOURCE) { eval '
sub spamd_child_init {
- my ($self) = @_;
+ my ($self) = @_;
- # Set CPU Resource limits if they were specified.
- Mail::SpamAssassin::Util::dbg("resourcelimitplugin: In spamd_child_init");
- Mail::SpamAssassin::Util::dbg( "resourcelimitplugin: cpu limit: " . $self->{main}->{conf}->{resource_limit_cpu} );
- if ( $self->{main}->{conf}->{resource_limit_cpu} ) {
- BSD::Resource::setrlimit( RLIMIT_CPU, $self->{main}->{conf}->{resource_limit_cpu}, $self->{main}->{conf}->{resource_limit_cpu} )
- || info("resourcelimitplugin: Unable to set RLIMIT_CPU");
- }
-
- # Set Resource limits if they were specified.
- Mail::SpamAssassin::Util::dbg( "resourcelimitplugin: mem limit: " . $self->{main}->{conf}->{resource_limit_mem} );
- if ( $self->{main}->{conf}->{resource_limit_mem} ) {
- BSD::Resource::setrlimit( RLIMIT_RSS, $self->{main}->{conf}->{resource_limit_mem}, $self->{main}->{conf}->{resource_limit_mem} )
- || info("resourcelimitplugin: Unable to set RLIMIT_RSS");
- BSD::Resource::setrlimit( RLIMIT_AS, $self->{main}->{conf}->{resource_limit_mem}, $self->{main}->{conf}->{resource_limit_mem} )
- || info("resourcelimitplugin: Unable to set RLIMIT_AS");
- }
+ my $conf = $self->{main}->{conf};
+
+ # Set CPU Resource limits if they were specified.
+ dbg("resourcelimits: cpu limit: " . $conf->{resource_limit_cpu});
+ if ($conf->{resource_limit_cpu}) {
+ BSD::Resource::setrlimit( RLIMIT_CPU,
+ $conf->{resource_limit_cpu}, $conf->{resource_limit_cpu} )
+ or info("resourcelimits: Unable to set RLIMIT_CPU");
+ }
+
+ # Set Resource limits if they were specified.
+ dbg("resourcelimits: mem limit: " . $conf->{resource_limit_mem});
+ if ($conf->{resource_limit_mem}) {
+ BSD::Resource::setrlimit( RLIMIT_RSS,
+ $conf->{resource_limit_mem}, $conf->{resource_limit_mem} )
+ or info("resourcelimits: Unable to set RLIMIT_RSS");
+ BSD::Resource::setrlimit( RLIMIT_AS,
+ $conf->{resource_limit_mem}, $conf->{resource_limit_mem} )
+ or info("resourcelimits: Unable to set RLIMIT_AS");
+ }
}
+'; }
1;
Modified: spamassassin/trunk/t/all_modules.t
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/all_modules.t?rev=1889393&r1=1889392&r2=1889393&view=diff
==============================================================================
--- spamassassin/trunk/t/all_modules.t (original)
+++ spamassassin/trunk/t/all_modules.t Sun May 2 09:04:05 2021
@@ -8,13 +8,8 @@ plan tests => 6;
# ---------------------------------------------------------------------------
-my $plugins = '';
-
-if (eval { require BSD::Resource; }) {
- $plugins .= "loadplugin Mail::SpamAssassin::Plugin::ResourceLimits\n"
-}
-
tstpre ("
+ loadplugin Mail::SpamAssassin::Plugin::ResourceLimits
loadplugin Mail::SpamAssassin::Plugin::RelayCountry
loadplugin Mail::SpamAssassin::Plugin::URIDNSBL
loadplugin Mail::SpamAssassin::Plugin::SPF
@@ -60,7 +55,6 @@ tstpre ("
loadplugin Mail::SpamAssassin::Plugin::AuthRes
loadplugin Mail::SpamAssassin::Plugin::Esp
loadplugin Mail::SpamAssassin::Plugin::ExtractText
- $plugins
");
tstprefs("
@@ -90,7 +84,8 @@ tstprefs("
if (conf_bool('run_net_tests')) {
# sometimes trips on URIBL_BLOCKED, ignore..
- sarun ("-D -t < data/nice/001 2>&1 | grep -v dns_block_rule", \&patterns_run_cb);
+ # also ignore BSD::Resource not installed
+ sarun ("-D -t < data/nice/001 2>&1 | grep -vE '(dns_block_rule|ResourceLimits not used)'", \&patterns_run_cb);
ok_all_patterns();
} else {
sarun ("-D -L -t < data/nice/001 2>&1", \&patterns_run_cb);
Modified: spamassassin/trunk/t/debug.t
URL: http://svn.apache.org/viewvc/spamassassin/trunk/t/debug.t?rev=1889393&r1=1889392&r2=1889393&view=diff
==============================================================================
--- spamassassin/trunk/t/debug.t (original)
+++ spamassassin/trunk/t/debug.t Sun May 2 09:04:05 2021
@@ -17,7 +17,7 @@ my %facility = map( ($_, 1),
message metadata mimeheader netset plugin prefork progress pyzor razor2
received-header replacetags reporter rules rules-all spamd spf textcat
timing TxRep uri uridnsbl util pdfinfo asn geodb RaciallyCharged
- PHISHTAG));
+ PHISHTAG resourcelimits ));
my $fh = IO::File->new_tmpfile();
open(OLDERR, ">&STDERR");