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");