Hello community,

here is the log from the commit of package munin for openSUSE:Factory checked 
in at 2014-11-04 17:29:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/munin (Old)
 and      /work/SRC/openSUSE:Factory/.munin.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "munin"

Changes:
--------
--- /work/SRC/openSUSE:Factory/munin/munin.changes      2014-09-28 
19:54:39.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.munin.new/munin.changes 2014-11-04 
17:29:55.000000000 +0100
@@ -1,0 +2,7 @@
+Sun Nov  2 22:26:03 UTC 2014 - [email protected]
+
+- update to version 2.0.24
+  * bugfix release
+    compatibility with perl 5.20
+
+-------------------------------------------------------------------

Old:
----
  munin-2.0.21.tar.gz

New:
----
  munin-2.0.24.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ munin.spec ++++++
--- /var/tmp/diff_new_pack.HWBktc/_old  2014-11-04 17:29:56.000000000 +0100
+++ /var/tmp/diff_new_pack.HWBktc/_new  2014-11-04 17:29:56.000000000 +0100
@@ -24,7 +24,7 @@
 %define        active_by_default 0
 
 Name:           munin
-Version:        2.0.21
+Version:        2.0.24
 Release:        0
 Summary:        Network-wide graphing framework (grapher/gatherer)
 License:        GPL-2.0


++++++ munin-2.0.21.tar.gz -> munin-2.0.24.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/.travis.yml new/munin-2.0.24/.travis.yml
--- old/munin-2.0.21/.travis.yml        2014-04-22 21:29:32.000000000 +0200
+++ new/munin-2.0.24/.travis.yml        2014-10-26 15:12:24.000000000 +0100
@@ -29,6 +29,7 @@
  - "cpanm --notest Test::MockModule"
  - "cpanm --notest Test::MockObject::Extends"
  - "cpanm --notest Time::HiRes"
+ - sh contrib/install_rrd.sh
 notifications:
   email: false
   irc:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/ChangeLog new/munin-2.0.24/ChangeLog
--- old/munin-2.0.21/ChangeLog  2014-04-22 21:29:32.000000000 +0200
+++ new/munin-2.0.24/ChangeLog  2014-10-26 15:12:24.000000000 +0100
@@ -1,5 +1,103 @@
 -*- text -*-
 
+munin-2.0.24, 2014-10-26
+
+-------
+Summary
+-------
+
+Bugfix release. It reopens D:675318, as it wasn't really fixed anyway.
+
+Closes: D:696981
+Reopens: D:675318
+
+------------------
+Detailed Changelog
+------------------
+
+Steve Schnepp (3):
+      m/update: fix "not a reference at /../Utils.pm"
+      Revert "p/postfix_mail: fix incorrect delivered message count"
+      p/postfix_mailstats: proper fix, but partial
+
+
+munin-2.0.23, 2014-10-17
+
+-------
+Summary
+-------
+
+Bugfix release. It enable the use of Perl 5.20, which broke CGI.
+( commit 9fabbe7 was forgotten in the previous release )
+
+Closes: D:762796
+
+------------------
+Detailed Changelog
+------------------
+
+Steve Schnepp (1):
+      cgi/html: fix CGI for perl 5.20
+
+
+munin-2.0.22, 2014-10-15
+
+-------
+Summary
+-------
+
+Bugfix release. It enable the use of Perl 5.20, which broke CGI.
+
+Closes: #1224, D:675318, D:711465, D:750954, D:751190, D:753506, D:761841, 
D:762904
+
+------------------
+Detailed Changelog
+------------------
+
+Chen-Yu Tsai (1):
+      cgi/graph: Set RRDCACHED_ADDRESS during each request
+
+Daniel Black (1):
+      Corrects the truncating of negative values in the diskstats plugin
+
+Gerald Turner (2):
+      dhcpd3 plugin should support multiple ranges in a single subnet
+      lower-case the dictionary keys in ipmi_sensor_
+
+Joerg Jaspert (1):
+      make proc plugin more careful in /proc/
+
+Klaus S. Madsen (1):
+      prevent diskstats plugin from reporting negative latency
+
+Rob Shortt (1):
+      node: munin plugin config ignores leading *
+
+Steve Schnepp (15):
+      master: add "use_default_node"
+      travis: adding preliminary test for rrd
+      travis: be root for rrd install
+      travis: fix rrd tar extract
+      travis: customized rrd build
+      travis: be root to install rrdtools.
+      travis: install the Perl deps in the Perl dir
+      travis: add some whitespace
+      travis: optimize for compile times
+      node: Only spoolfetch send 5 samples per service
+      asyncd: Use SyncDictFile for plugin_rates
+      asyncd: just use the SpoolWriter META-DATA
+      p/postfix_mail: fix incorrect delivered message count
+      p/http_loadtime: fix escaping of user agent
+
+Stig Sandbeck Mathisen (3):
+      Remove linux-specific plugin files_ (ticket:1661)
+      Detect more postgresql versions.
+      Fix POD errors
+
+tbear2500 (1):
+      Generate correct rrd filename
+
+
 munin-2.0.21, 2014-04-22
 
 -------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/RELEASE new/munin-2.0.24/RELEASE
--- old/munin-2.0.21/RELEASE    2014-04-22 21:29:56.000000000 +0200
+++ new/munin-2.0.24/RELEASE    2014-10-26 15:12:50.000000000 +0100
@@ -1 +1 @@
-2.0.21
+2.0.24
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/common/lib/Munin/Common/Config.pm 
new/munin-2.0.24/common/lib/Munin/Common/Config.pm
--- old/munin-2.0.21/common/lib/Munin/Common/Config.pm  2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/common/lib/Munin/Common/Config.pm  2014-10-26 
15:12:24.000000000 +0100
@@ -130,6 +130,7 @@
        update_rate
        use_default_name
        use_node_name
+       use_default_node
        version
        warn
        warning
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/contrib/install_rrd.sh 
new/munin-2.0.24/contrib/install_rrd.sh
--- old/munin-2.0.21/contrib/install_rrd.sh     1970-01-01 01:00:00.000000000 
+0100
+++ new/munin-2.0.24/contrib/install_rrd.sh     2014-10-26 15:12:24.000000000 
+0100
@@ -0,0 +1,37 @@
+#! /bin/sh
+
+# Be pedantic
+set -x
+set -e
+
+# We want to optimize for *compile time*
+export CFLAGS="-O0 -pipe"
+
+# install deps
+sudo apt-get install libpango1.0-dev libxml2-dev
+
+# Download a fixed version
+wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.8.tar.gz
+tar -xzvf rrdtool-1.4.8.tar.gz
+cd rrdtool-1.4.8
+
+./configure \
+       --disable-dependency-tracking \
+       --disable-rrdcgi \
+       --disable-mmap \
+       --disable-pthread \
+       --enable-perl \
+       --enable-perl-site-install \
+       --disable-ruby \
+       --disable-lua \
+       --disable-tcl \
+       --disable-python \
+       --disable-libdbi \
+       --disable-libwrap \
+       # Leave at the end
+
+make
+sudo make install
+
+# Test the install
+perl -MRRDs -e ''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/master/_bin/munin-cgi-graph.in 
new/munin-2.0.24/master/_bin/munin-cgi-graph.in
--- old/munin-2.0.21/master/_bin/munin-cgi-graph.in     2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/master/_bin/munin-cgi-graph.in     2014-10-26 
15:12:24.000000000 +0100
@@ -150,6 +150,10 @@
        next;
     }
 
+    # Environment variables are cleared each request
+    # so we must set RRDCACHED_ADDRESS each time
+    $ENV{RRDCACHED_ADDRESS} = $config->{rrdcached_socket} if 
$config->{rrdcached_socket};
+
     my $filename = get_picture_filename ($config, $dom, $host, $serv, $scale, 
$ENV{QUERY_STRING});
 
     my $time = time;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/master/_bin/munin-cgi-html.in 
new/munin-2.0.24/master/_bin/munin-cgi-html.in
--- old/munin-2.0.21/master/_bin/munin-cgi-html.in      2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/master/_bin/munin-cgi-html.in      2014-10-26 
15:12:24.000000000 +0100
@@ -165,3 +165,10 @@
        }
        return undef;
 }
+
+# CGI in perl 5.20 is now seriously broken as it doesn't import into the 
namespace.
+# So we have to delegate explicitely. It's easier than prefixing with CGI:: 
each use.
+sub header { return CGI::header(@_); }
+sub path_info { return CGI::path_info(@_); }
+sub url { return CGI::url(@_); }
+sub script_name { return CGI::script_name(@_); }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/master/lib/Munin/Master/Config.pm 
new/munin-2.0.24/master/lib/Munin/Master/Config.pm
--- old/munin-2.0.21/master/lib/Munin/Master/Config.pm  2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/master/lib/Munin/Master/Config.pm  2014-10-26 
15:12:24.000000000 +0100
@@ -124,6 +124,7 @@
     tls_verify_certificate
     update
     use_node_name
+    use_default_node
 );
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/master/lib/Munin/Master/GraphOld.pm 
new/munin-2.0.24/master/lib/Munin/Master/GraphOld.pm
--- old/munin-2.0.21/master/lib/Munin/Master/GraphOld.pm        2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/master/lib/Munin/Master/GraphOld.pm        2014-10-26 
15:12:24.000000000 +0100
@@ -2,6 +2,8 @@
 
 # -*- cperl -*-
 
+=encoding utf-8
+
 =begin comment
 
 This is Munin::Master::GraphOld, a package shell to make munin-graph
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/master/lib/Munin/Master/HTMLOld.pm 
new/munin-2.0.24/master/lib/Munin/Master/HTMLOld.pm
--- old/munin-2.0.21/master/lib/Munin/Master/HTMLOld.pm 2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/master/lib/Munin/Master/HTMLOld.pm 2014-10-26 
15:12:24.000000000 +0100
@@ -1,5 +1,7 @@
 package Munin::Master::HTMLOld;
 
+=encoding utf-8
+
 =begin comment
 -*- perl -*-
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/master/lib/Munin/Master/Logger.pm 
new/munin-2.0.24/master/lib/Munin/Master/Logger.pm
--- old/munin-2.0.21/master/lib/Munin/Master/Logger.pm  2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/master/lib/Munin/Master/Logger.pm  2014-10-26 
15:12:24.000000000 +0100
@@ -2,6 +2,8 @@
 
 # $Id$
 
+=encoding utf-8
+
 =head1 NAME
 
 Munin::Master::Logger - Munin master's old logging routines
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/master/lib/Munin/Master/Node.pm 
new/munin-2.0.24/master/lib/Munin/Master/Node.pm
--- old/munin-2.0.21/master/lib/Munin/Master/Node.pm    2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/master/lib/Munin/Master/Node.pm    2014-10-26 
15:12:24.000000000 +0100
@@ -146,6 +146,8 @@
        }
     };
 
+    INFO "node $self->{host} advertised itself as $self->{node_name} instead." 
if $self->{node_name} && $self->{node_name} ne $self->{host};
+
     return 1;
 }
 
@@ -237,15 +239,20 @@
         ? $self->{node_name}
         : $self->{host};
 
-    if (not $host) {
+    my $use_default_node = defined($self->{configref}{use_default_node})
+        ? $self->{configref}{use_default_node}
+        : $config->{use_default_node};
+
+    if (! $use_default_node && ! $host) {
        die "[ERROR] Couldn't find out which host to list on $host.\n";
     }
 
-    $self->_node_write_single("list $host\n");
+    my $list_host = $use_default_node ? "" : $host;
+    $self->_node_write_single("list $list_host\n");
     my $list = $self->_node_read_single();
 
     if (not $list) {
-        WARN "[WARNING] Config node $self->{host} listed no services for 
$host.  Please see http://munin-monitoring.org/wiki/FAQ_no_graphs for further 
information.";
+        WARN "[WARNING] Config node $self->{host} listed no services for 
$host, (advertised as $self->{node_name}).  Please see 
http://munin-monitoring.org/wiki/FAQ_no_graphs for further information.";
     }
 
     return split / /, $list;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/master/lib/Munin/Master/Utils.pm 
new/munin-2.0.24/master/lib/Munin/Master/Utils.pm
--- old/munin-2.0.21/master/lib/Munin/Master/Utils.pm   2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/master/lib/Munin/Master/Utils.pm   2014-10-26 
15:12:24.000000000 +0100
@@ -856,6 +856,10 @@
 
 sub munin_write_storable {
        my ($storable_filename, $data) = @_;
+       DEBUG "[DEBUG] about to write '$storable_filename'";
+
+       # We don't need to write anything if there is nothing to write.
+       return unless defined $data;
 
        my $storable_filename_tmp = $storable_filename . ".tmp.$$";
 
@@ -1161,7 +1165,7 @@
     }
 
     if ($asfile) {
-       return join('/',@group).'-'.join('-',@service);
+       return (shift @group).'/'.join('/',@group).'-'.join('-',@service);
     } else {
        return join(';',@group).':'.join('.',@service);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/node/_bin/munin-asyncd.in 
new/munin-2.0.24/node/_bin/munin-asyncd.in
--- old/munin-2.0.21/node/_bin/munin-asyncd.in  2014-04-22 21:29:32.000000000 
+0200
+++ new/munin-2.0.24/node/_bin/munin-asyncd.in  2014-10-26 15:12:24.000000000 
+0100
@@ -93,8 +93,6 @@
 
 my $process_name = "main";
 
-my $plugin_rate_filename = "$SPOOLDIR/plugin_rates";
-
 my @plugins;
 {
        print STDERR "[$$][$process_name] Reading config from $host\n" if 
$verbose;
@@ -149,7 +147,7 @@
        my $sock;
        PLUGIN: foreach my $plugin (@plugins) {
                # See if this plugin should be updated
-               my $plugin_rate = get_hash($plugin, $plugin_rate_filename) || 
300;
+               my $plugin_rate = 
$spoolwriter->get_metadata("plugin_rates/$plugin") || 300;
                if ($when < ($last_updated{$plugin} || 0) + $plugin_rate) {
                        # not yet, next plugin
                        next;
@@ -244,7 +242,7 @@
                                # XXX - Doesn't take into account a per field 
update_rate
 
                                # This has to be sent back to the master
-                               set_hash($plugin, $1, $plugin_rate_filename);
+                               
$spoolwriter->set_metadata("plugin_rates/$plugin", $1);
                        }
                }
 
@@ -269,36 +267,6 @@
                $spoolwriter->write($when, $plugin, $output_rows);
 }
 
-sub get_hash
-{
-       my ($key, $filename) = @_;
-       my %hash;
-
-       use Fcntl;   # For O_RDWR, O_CREAT, etc.
-       use DB_File;
-       tie (%hash, 'DB_File', $filename, O_RDWR|O_CREAT, 0666) 
-               or die "$!";
-       my $value = $hash{$key};
-       untie(%hash);
-
-       return $value;
-}
-
-sub set_hash
-{
-       my ($key, $value, $filename) = @_;
-       my %hash;
-
-       use Fcntl;   # For O_RDWR, O_CREAT, etc.
-       use DB_File;
-       tie (%hash, 'DB_File', $filename, O_RDWR|O_CREAT, 0666) 
-               or die "$!";
-       $hash{$key} = $value;
-       untie(%hash);
-}
-
-
-
 __END__
 
 =head1 NAME
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/node/lib/Munin/Node/Config.pm 
new/munin-2.0.24/node/lib/Munin/Node/Config.pm
--- old/munin-2.0.21/node/lib/Munin/Node/Config.pm      2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/node/lib/Munin/Node/Config.pm      2014-10-26 
15:12:24.000000000 +0100
@@ -290,14 +290,19 @@
 
 sub apply_wildcards {
     my ($self, @services) = @_;
+    my $ws;
 
     # Need to sort the keys in descending order so that more specific
     # wildcards take precedence.
-    for my $wildservice (grep { /\*$/ } reverse sort keys %{$self->{sconf}}) {
-        my $ws = substr $wildservice, 0, -1;
+    for my $wildservice (grep { /\*$/ || /^\*/ } reverse sort keys 
%{$self->{sconf}}) {
+        if ($wildservice =~ /\*$/) {
+            $ws = substr $wildservice, 0, -1;
+        } else {
+            $ws = substr $wildservice, 1;
+        }
 
         for my $service (@services) {
-            next unless $service =~ /^$ws/;
+            next unless $service =~ /^$ws/ || $service =~ /$ws$/;
             $self->_apply_wildcard_to_service($self->{sconf}{$wildservice},
                                               $service);
         }
@@ -410,5 +415,7 @@
 
 See L<http://munin-monitoring.org/wiki/Priority_and_inheritance>
 
+=back
+
 =cut
 # vim: sw=4 : ts=4 : et
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/munin-2.0.21/node/lib/Munin/Node/Configure/History.pm 
new/munin-2.0.24/node/lib/Munin/Node/Configure/History.pm
--- old/munin-2.0.21/node/lib/Munin/Node/Configure/History.pm   2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/node/lib/Munin/Node/Configure/History.pm   2014-10-26 
15:12:24.000000000 +0100
@@ -140,5 +140,7 @@
 plugin should be ignored, true otherwise (ie. if 'newer' wasn't set, the plugin
 is user-contributed, etc).
 
+=back
+
 =cut
 # vim: sw=4 : ts=4 : expandtab
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/node/lib/Munin/Node/OS.pm 
new/munin-2.0.24/node/lib/Munin/Node/OS.pm
--- old/munin-2.0.21/node/lib/Munin/Node/OS.pm  2014-04-22 21:29:32.000000000 
+0200
+++ new/munin-2.0.24/node/lib/Munin/Node/OS.pm  2014-10-26 15:12:24.000000000 
+0100
@@ -380,6 +380,7 @@
 Set umask so that files created by plugins are group writable
 Only call right before exec-ing a plugin.
 
+=back
 
 =cut
 # vim: ts=4 : sw=4 : et
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/node/lib/Munin/Node/Server.pm 
new/munin-2.0.24/node/lib/Munin/Node/Server.pm
--- old/munin-2.0.21/node/lib/Munin/Node/Server.pm      2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/node/lib/Munin/Node/Server.pm      2014-10-26 
15:12:24.000000000 +0100
@@ -443,5 +443,7 @@
 
 Processes the request.
 
+=back
+
 =cut
 vim: ts=4 : et : sw=4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/node/lib/Munin/Node/SpoolReader.pm 
new/munin-2.0.24/node/lib/Munin/Node/SpoolReader.pm
--- old/munin-2.0.21/node/lib/Munin/Node/SpoolReader.pm 2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/node/lib/Munin/Node/SpoolReader.pm 2014-10-26 
15:12:24.000000000 +0100
@@ -100,13 +100,20 @@
 
 sub _cat_multigraph_file
 {
-    my ($self, $service, $timestamp) = @_;
+    my ($self, $service, $timestamp, $max_samples_per_service) = @_;
+
+    # Default $max_samples_per_service is 5, in order to have a 5x time
+    # increase in catchup.  This enables to not overwhelm the munin-update when
+    # there is big backlog to handle. Use "0" to send an infinite number of
+    # samples
+    $max_samples_per_service = 5 if (! defined $max_samples_per_service);
 
     my $data = "";
 
     rewinddir $self->{spooldirhandle}
         or die "Unable to reset the spool directory handle: $!";
 
+    my $nb_samples_sent = 0;
     foreach my $file (readdir $self->{spooldirhandle}) {
         next unless $file =~ m/^munin-daemon\.$service\.(\d+)\.(\d+)$/;
         next unless $1+$2 >= $timestamp;
@@ -147,6 +154,13 @@
 
             $data .= $_ . "\n";
         }
+
+       # We just emitted something
+       $nb_samples_sent ++;
+       if ($max_samples_per_service && $nb_samples_sent > 
$max_samples_per_service) {
+               logger("Already sent $nb_samples_sent for '$service', ending.") 
if $config->{DEBUG};
+               last;
+       }
     }
 
     return $data;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/node/lib/Munin/Node/Utils.pm 
new/munin-2.0.24/node/lib/Munin/Node/Utils.pm
--- old/munin-2.0.21/node/lib/Munin/Node/Utils.pm       2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/node/lib/Munin/Node/Utils.pm       2014-10-26 
15:12:24.000000000 +0100
@@ -62,6 +62,7 @@
 
 Returns the list of elements common to arrayrefs \@a and \@b.
 
+=back
 
 =cut
 # vim: ts=4 : et
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/lib/Munin/Plugin/Pgsql.pm 
new/munin-2.0.24/plugins/lib/Munin/Plugin/Pgsql.pm
--- old/munin-2.0.21/plugins/lib/Munin/Plugin/Pgsql.pm  2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/plugins/lib/Munin/Plugin/Pgsql.pm  2014-10-26 
15:12:24.000000000 +0100
@@ -478,7 +478,7 @@
     my $r = $self->runquery("SELECT version()");
     my $v = $r->[0]->[0];
     die "Unable to detect PostgreSQL version\n"
-        unless ($v =~ /^PostgreSQL (\d+)\.(\d+)(\.\d+|devel)\b/);
+        unless ($v =~ /^PostgreSQL (\d+)\.(\d+)(\.\d+|devel|beta\d+)\b/);
     $self->{detected_version} = "$1.$2";
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/lib/Munin/Plugin/SNMP.pm 
new/munin-2.0.24/plugins/lib/Munin/Plugin/SNMP.pm
--- old/munin-2.0.21/plugins/lib/Munin/Plugin/SNMP.pm   2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/plugins/lib/Munin/Plugin/SNMP.pm   2014-10-26 
15:12:24.000000000 +0100
@@ -27,6 +27,8 @@
 
 # $Id$
 
+=encoding utf-8
+
 =head1 NAME
 
 Munin::Plugin::SNMP - Net::SNMP subclass for Munin plugins
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/node.d/dhcpd3.in 
new/munin-2.0.24/plugins/node.d/dhcpd3.in
--- old/munin-2.0.21/plugins/node.d/dhcpd3.in   2014-04-22 21:29:32.000000000 
+0200
+++ new/munin-2.0.24/plugins/node.d/dhcpd3.in   2014-10-26 15:12:24.000000000 
+0100
@@ -169,15 +169,16 @@
            print "# DEBUG: Found a subnet: $name\n" if $DEBUG;
        }
        if($name && /^\}$/) {
-           print "# DEBUG: End of subnet... NO RANGE?\n" if $DEBUG;
-           delete($leases{$name});
+            if(!exists $limits{$name}) {
+                print "# DEBUG: End of subnet... NO RANGE?\n" if $DEBUG;
+                delete($leases{$name});
+            }
            $name = "";
        }
        if($name && /range\s+((?:\d+\.){3}\d+)\s+((?:\d+\.){3}\d+)/) {
            print "# DEBUG: range $1 -> $2\n" if $DEBUG;
            $limits{$name} += &rangecount($1, $2);
            print "# DEBUG: limit for $name is " . $limits{$name} . "\n" if 
$DEBUG;
-           $name = "";
        }
        if(/^include \"([^\"]+)\";/) {
            my $includefile = $1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/node.d/http_loadtime.in 
new/munin-2.0.24/plugins/node.d/http_loadtime.in
--- old/munin-2.0.21/plugins/node.d/http_loadtime.in    2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/plugins/node.d/http_loadtime.in    2014-10-26 
15:12:24.000000000 +0100
@@ -30,7 +30,7 @@
 =cut
 
 target=${target:-"http://localhost/"}
-wget_opt="--user-agent \"Munin - http_loadtime\" --no-cache -q --delete-after"
+wget_opt="--user-agent munin/http_loadtime --no-cache -q --delete-after"
 time_bin=`which time`
 
 if [ "$1" = "autoconf" ]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/node.d/ipmi_sensor_.in 
new/munin-2.0.24/plugins/node.d/ipmi_sensor_.in
--- old/munin-2.0.21/plugins/node.d/ipmi_sensor_.in     2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/plugins/node.d/ipmi_sensor_.in     2014-10-26 
15:12:24.000000000 +0100
@@ -119,7 +119,7 @@
         if not cur_sensor:
             continue
         label, data = line.split(":", 1)
-        cur_sensor[label.strip()] = data.strip()
+        cur_sensor[label.strip().lower()] = data.strip()
     return sensors
 
 def get_sensor_names():
@@ -242,16 +242,16 @@
         nname = normalize_sensor(lbl)
         
         print "%s.label %s" % (nname, lbl)
-        assertions = values['Assertions Enabled'].split()
+        assertions = values['assertions enabled'].split()
         warn_l = warn_u = crit_l = crit_u = ""
         if 'lcr-' in assertions:
-            crit_l = values['Lower Critical'].replace("na","")
+            crit_l = values['lower critical'].replace("na","")
         if 'lnc-' in assertions:
-            warn_l = values['Lower Non-Critical'].replace("na","")
+            warn_l = values['lower non-critical'].replace("na","")
         if 'ucr+' in assertions:
-            crit_u = values['Upper Critical'].replace("na","")
+            crit_u = values['upper critical'].replace("na","")
         if 'unc+' in assertions:
-            warn_u = values['Upper Non-Critical'].replace("na","")
+            warn_u = values['upper non-critical'].replace("na","")
         warn = "%s:%s" % (warn_l,warn_u)
         crit = "%s:%s" % (crit_l,crit_u)
         if warn!=":":
@@ -270,7 +270,7 @@
     data = get_sensors()
     for lbl in info['sensors']:
         nname = normalize_sensor(lbl)
-        value = data[lbl]["Sensor Reading"].split()[0]
+        value = data[lbl]["sensor reading"].split()[0]
         print "%s.value %s" % (nname, value)
     
 
@@ -299,10 +299,10 @@
     print SENSORS
     data = get_sensors()
     for key, value in data.items():
-        print "%s : %s (%s - %s) [%s - %s] %s" % (key, value['Sensor Reading'],
-                                                  value['Lower Non-Critical'], 
value['Upper Non-Critical'],
-                                                  value['Lower Critical'], 
value['Upper Critical'],
-                                                  value['Assertions Enabled'],)
+        print "%s : %s (%s - %s) [%s - %s] %s" % (key, value['sensor reading'],
+                                                  value['lower non-critical'], 
value['upper non-critical'],
+                                                  value['lower critical'], 
value['upper critical'],
+                                                  value['assertions enabled'],)
 
 def main():
     if len(sys.argv)>1:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/node.d/postfix_mailstats.in 
new/munin-2.0.24/plugins/node.d/postfix_mailstats.in
--- old/munin-2.0.21/plugins/node.d/postfix_mailstats.in        2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/plugins/node.d/postfix_mailstats.in        2014-10-26 
15:12:24.000000000 +0100
@@ -182,7 +182,7 @@
        my $line = <LOGFILE>;
        chomp ($line);
 
-       if ($line =~ /qmgr.*from=.*size=[0-9]*/) 
+       if ($line =~ / to=.*, status=sent /)
        {
            $delivered++;
        } 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/node.d.linux/diskstats.in 
new/munin-2.0.24/plugins/node.d.linux/diskstats.in
--- old/munin-2.0.21/plugins/node.d.linux/diskstats.in  2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/plugins/node.d.linux/diskstats.in  2014-10-26 
15:12:24.000000000 +0100
@@ -148,6 +148,28 @@
     return;
 }
 
+# subtract_wrapping_numbers
+#
+# Will subtract two numbers, but takes into account that the numbers
+# are represented as either a 32-bit value which wraps at 2 ** 32 - 1,
+# or a 64-bit value.
+
+sub subtract_wrapping_numbers {
+    my ( $cur_value, $prev_value ) = @_;
+
+    return $cur_value - $prev_value if $cur_value >= $prev_value;
+
+    # The numbers seems to have wrapped.
+    if ($prev_value <= 2 ** 32) {
+        # Unsigned int wraps here.
+        $cur_value += 2 ** 32;
+    } else {
+        $cur_value += 2 ** 64;
+    }
+
+    return $cur_value - $prev_value;
+}
+
 # calculate_values
 #
 # Calculates all data that get's graphed
@@ -159,16 +181,16 @@
 
     my $interval = time() - $prev_time;
 
-    my $read_ios  = $cur_stats->{'rd_ios'} - $prev_stats->{'rd_ios'};
-    my $write_ios = $cur_stats->{'wr_ios'} - $prev_stats->{'wr_ios'};
+    my $read_ios  = subtract_wrapping_numbers($cur_stats->{'rd_ios'}, 
$prev_stats->{'rd_ios'});
+    my $write_ios = subtract_wrapping_numbers($cur_stats->{'wr_ios'}, 
$prev_stats->{'wr_ios'});
 
-    my $rd_ticks = $cur_stats->{'rd_ticks'} - $prev_stats->{'rd_ticks'};
-    my $wr_ticks = $cur_stats->{'wr_ticks'} - $prev_stats->{'wr_ticks'};
+    my $rd_ticks = subtract_wrapping_numbers($cur_stats->{'rd_ticks'}, 
$prev_stats->{'rd_ticks'});
+    my $wr_ticks = subtract_wrapping_numbers($cur_stats->{'wr_ticks'}, 
$prev_stats->{'wr_ticks'});
 
-    my $rd_sectors = $cur_stats->{'rd_sectors'} - $prev_stats->{'rd_sectors'};
-    my $wr_sectors = $cur_stats->{'wr_sectors'} - $prev_stats->{'wr_sectors'};
+    my $rd_sectors = subtract_wrapping_numbers($cur_stats->{'rd_sectors'}, 
$prev_stats->{'rd_sectors'});
+    my $wr_sectors = subtract_wrapping_numbers($cur_stats->{'wr_sectors'}, 
$prev_stats->{'wr_sectors'});
 
-    my $tot_ticks = $cur_stats->{'tot_ticks'} - $prev_stats->{'tot_ticks'};
+    my $tot_ticks = subtract_wrapping_numbers($cur_stats->{'tot_ticks'}, 
$prev_stats->{'tot_ticks'});
 
     my $read_io_per_sec  = $read_ios / $interval;
     my $write_io_per_sec = $write_ios / $interval;
@@ -195,13 +217,6 @@
     my $average_rd_wait_in_sec = $read_ios  ? $rd_ticks / $read_ios / 1000  : 
0;
     my $average_wr_wait_in_sec = $write_ios ? $wr_ticks / $write_ios / 1000 : 
0;
 
-    if ( $average_rd_wait_in_sec < 0 ) {
-      $average_rd_wait_in_sec = 0;
-    }
-    if ( $average_wr_wait_in_sec < 0 ) {
-      $average_wr_wait_in_sec = 0;
-    }
-
     my $average_rd_rq_size_in_kb =
       $read_ios ? $rd_sectors * $bytes_per_sector / 1000 / $read_ios : 0;
     my $average_wr_rq_size_in_kb =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/node.d.linux/files_.in 
new/munin-2.0.24/plugins/node.d.linux/files_.in
--- old/munin-2.0.21/plugins/node.d.linux/files_.in     2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/plugins/node.d.linux/files_.in     1970-01-01 
01:00:00.000000000 +0100
@@ -1,50 +0,0 @@
-#!@@GOODSH@@
-# 
-# Plugin to monitor the number of open files in the system.
-#
-# Parameters:
-#      
-#      config   (required)
-#      autoconf (optional - used by munin-config)
-#
-# Magic markers (Used by munin-config and some installation scripts.
-# Optional):
-#
-#%# family=contrib
-#%# capabilities=autoconf
-
-PROC=${0##*/files_}
-TMPFILE="$MUNIN_PLUGSTATE/munin-files_${PROC}.state"
-
-if [ "$1" = "autoconf" ]; then
-       if [ -x /usr/sbin/lsof ]; then
-               echo yes
-               exit 0
-       else
-               echo "no (no lsof)"
-               exit 0
-       fi
-fi
-
-if [ "$1" = "config" ]; then
-       echo graph_title slapd open files usage
-       echo graph_args --base 1000 -l 0
-       echo graph_vlabel number of files
-       echo graph_category system
-       echo cnt.label Slapd proc count
-       echo avg.label avg all slapd proc
-       echo max.label max slapd files
-       echo max.warning  900
-       echo max.critical 960
-       exit 0
-fi
-
-if [ "$1" = "collect" ]; then
-  for ALL in $(pgrep -u root $PROC) ; do 
-    lsof -p $ALL | wc -l 
-  done | sort -n | \
-    awk '{ C=C+1 ;  S=S + $1 ; M=$1 } END { printf "cnt.value %d\navg.value 
%d\nmax.value %d\n", C, S/C, M} ' 
-else
-  [ -f $TMPFILE ] && cat $TMPFILE
-  echo "/etc/munin/node.d/slapd_files collect > $TMPFILE" | at +4min 
2>/dev/null
-fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/node.d.linux/proc.in 
new/munin-2.0.24/plugins/node.d.linux/proc.in
--- old/munin-2.0.21/plugins/node.d.linux/proc.in       2014-04-22 
21:29:32.000000000 +0200
+++ new/munin-2.0.24/plugins/node.d.linux/proc.in       2014-10-26 
15:12:24.000000000 +0100
@@ -320,7 +320,7 @@
         $procstats{$procuniq[$i]}{"write_bytes"} = 0;
         $procstats{$procuniq[$i]}{"cancelled_write_bytes"} = 0;
 
-        STATLINE: foreach my $line(`grep -h \\\($procname[$i]\\\) 
/proc/*/stat`) {
+        STATLINE: foreach my $line(`grep -h \\\($procname[$i]\\\) 
/proc/[0-9]*/stat`) {
             $line =~ /^(\d+)/;
             my $cmdline = `cat /proc/$1/cmdline | @@PERL@@ -F\"\\0\" -lane 
'\$s = join(\" \", \@F); print \$s;'`;
             my $cmduid = `cat /proc/$1/status | egrep '^Uid:' | awk '{ print 
\$2 }'`;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/munin-2.0.21/plugins/plugins.history.in 
new/munin-2.0.24/plugins/plugins.history.in
--- old/munin-2.0.21/plugins/plugins.history.in 2014-04-22 21:29:32.000000000 
+0200
+++ new/munin-2.0.24/plugins/plugins.history.in 2014-10-26 15:12:24.000000000 
+0100
@@ -366,3 +366,6 @@
 [2.0.19]
 [2.0.20]
 [2.0.21]
+[2.0.22]
+[2.0.23]
+[2.0.24]


-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to