Skip Menu |

This queue is for tickets about the jmx4perl CPAN distribution.

Report information
The Basics
Id: 62342
Status: resolved
Priority: 0/
Queue: jmx4perl

People
Owner: Nobody in particular
Requestors: isaac.hollander [...] seleritycorp.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: Perl warning in SingleCheck.pm line 369
Date: Thu, 21 Oct 2010 11:59:28 -0400
To: bug-jmx4perl [...] rt.cpan.org
From: Isaac Hollander <isaac.hollander [...] seleritycorp.com>
Hello, I'm working on integrating Jmx4Perl into my Nagios monitoring system, and see a Perl warning: CentOS 5.5, with jmx4perl 0.72 installed from CPAN [root@ny2bmonp01 selerity]# check_jmx4perl --url http://jc1txtrt01:8080/j4p --string --critical '!true' -m 'core-services:name=datasource' -o checkConnection Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/site_perl/5.8.8/JMX/Jmx4Perl/Nagios/SingleCheck.pm line 369. Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/site_perl/5.8.8/JMX/Jmx4Perl/Nagios/SingleCheck.pm line 369. OK - [core-services:name=datasource,] : 'true' as expected | [core-services:name#datasource,]=true;;!true Looks like $self->alias is not defined: sub _get_name { 361 my $self = shift; 362 my $args = { @_ }; 363 my $name = $args->{name}; 364 if (!$name) { 365 if ($self->name) { 366 $name = $self->name; 367 } else { 368 # Default name 369 $name = $self->alias ? 370 "[".$self->alias.($self->path ? "," . $self->path : "") ."]" : 371 $self->value ? 372 "[" . $self->value . "]" : 373 "[".$self->mbean.",".$self->attribute.($self->path ? "," . $self->path : "")."]"; 374 } 375 } 376 if ($args->{cleanup}) { 377 # Enable this when '=' gets forbidden 378 $name =~ s/=/#/g; 379 } 380 # Prepare label for usage with Nagios::Plugin, which will blindly 381 # add quotes if a space is contained in the label. 382 # We are doing the escape of quotes ourself here 383 $name =~ s/'/''/g; 384 return $name; 385 } _get_name() is called in 2 places -- once in _format_label() and once in extract_responses(). For what its worth, adding a --label arg to the command line removes one of the warnings. [root@ny2bmonp01 selerity]# check_jmx4perl --url http://jc1txtrt01:8080/j4p --string --critical '!true' -m 'core-services:name=datasource' -o checkConnection --label checkConnection Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/site_perl/5.8.8/JMX/Jmx4Perl/Nagios/SingleCheck.pm line 369. OK - checkConnection | [core-services:name#datasource,]=true;;!true [root@ny2bmonp01 selerity]# uname -a Linux ny2bmonp01.seleritycorp.com 2.6.18-194.11.3.el5 #1 SMP Mon Aug 30 16:19:16 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux [root@ny2bmonp01 selerity]# perl -v This is perl, v5.8.8 built for x86_64-linux-thread-multi Copyright 1987-2006, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. [root@ny2bmonp01 selerity]# perl -V Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=linux, osvers=2.6.18-53.el5, archname=x86_64-linux-thread-multi uname='linux builder10.centos.org 2.6.18-53.el5 #1 smp mon nov 12 02:14:55 est 2007 x86_64 x86_64 x86_64 gnulinux ' config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Dversion=5.8.8 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Dprivlib=/usr/lib/perl5/5.8.8 -Dsitelib=/usr/lib/perl5/site_perl/5.8.8 -Dvendorlib=/usr/lib/perl5/vendor_perl/5.8.8 -Darchlib=/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi -Dsitearch=/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi -Dvendorarch=/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi -Darchname=x86_64-linux-thread-multi -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.7 5.8.6 5.8.5 -Dscriptdir=/usr/bin' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm', optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic', cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm' ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-48)', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='gcc', ldflags ='' libpth=/usr/local/lib64 /lib64 /usr/lib64 libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc libc=, so=so, useshrplib=true, libperl=libperl.so gnulibc_version='2.5' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API Built under linux Compiled at Jun 7 2010 21:26:02 @INC: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 . -- Isaac Hollander Senior Systems Engineer Selerity http://www.seleritycorp.com O: (201) 377 2095
Thanks for your report.

I doubt, the $self->alias is undef since this is explicitely checked before
the string concatenation happens.

The reason is, that $self->attribute() is not defined. The _get_name method
falsly assumes, that the check always as an attribute set, but you are checking
for an operation. So, it should user either $self->attribute or $self->operation here.

I will fix this ASAP. Expect a 0.73 within the next two weeks.

In the meantime, if you use --name (not --label) will fix the issue. (--name is used for the performance data,
--label for the plugin output appearing in the Nagios UI).

Thanks for spotting this.

...roland
 
Subject: Re: [rt.cpan.org #62342] Perl warning in SingleCheck.pm line 369
Date: Thu, 21 Oct 2010 15:56:21 -0400
To: bug-jmx4perl [...] rt.cpan.org
From: Isaac Hollander <isaac.hollander [...] seleritycorp.com>
Confirmed that --name removes the warning: [root@ny2bmonp01 selerity]# check_jmx4perl --url http://jc1txtrt01:8080/j4p --string --critical '!true' -m 'core-services:name=datasource' -o checkConnection --name checkConnection OK - checkConnection : 'true' as expected | checkConnection=true;;!true Thanks for the quick response!
 Fixed in 0.73