I was
attempting to configure a new installation of lpar2rrd (version 2.65) for a
customer today when I encountered the following error during the initial load of
data from the HMC:
lpar2rrd@nim
[/home/lpar2rrd/lpar2rrd]$ ./load.sh
LPAR2RRD
version 2.65
HMC
: hmc01
managed
system : 750-1 (type_model*serial : 8233-E8B*0646D0P)
HMC
version : 77301
There
is no RRD: attempting to do initial load, be patient, it might take some time
sample
rate : 60 seconds
fetching
HMC : hmc01:750-DR CPU lpar config
fetching
HMC : hmc01:750-DR CPU/MEM global config
sys
change : hmc01:750-DR:100
installing
WWW : install-html.sh 2.59
An
error occured in lpar2rrd, check ./error.log and output of load.sh
$
tail -3 ./error.log
Argument ""
isn't numeric in numeric le (<=) at /home/lpar2rrd/lpar2rrd/lpar2rrd.pl line
532.
Can't use string
("") as a SCALAR ref while "strict refs" in use at
/home/lpar2rrd/lpar2rrd/lpar2rrd.pl line 533.
Wed
23 Nov 12:04:09 2011 : hmc01 : An error occured in lpar2rrd.pl, check
./error.log and output of load.sh
We were able
to get this working by hacking the lpar2rrd.pl script.
The
following code:
if ( $loadhours <= 0 || $loadmins <=
0) { # workaround as this sometimes is
negative , need to check it out ...
my $t1 = localtime($$last_rec);
my $t2 = localtime($t);
print STDERR "$act_time: time issue
1 : $host:$managedname $loadhours
$loadmins \n";
print STDERR " Last saved record (HMC lslparutil time) :
$$last_rec ; HMC time : $t \n";
print "$act_time: time issue 1 : $host:$managedname $loadhours $loadmins
\n" if $DEBUG ;
print " Last saved record (HMC lslparutil time) :
$$last_rec ; HMC time : $t \n" if $DEBUG ;
$loadhours = 3;
$loadmins
= 140;
}
Was changed to:
$loadmins = 140;
if ( $loadhours <= 0 || $loadmins <=
0) { # workaround as this sometimes is
negative , need to check it out ...
my $t1 = localtime($$last_rec);
my $t2 = localtime($t);
print STDERR "$act_time: time issue
1 : $host:$managedname $loadhours
$loadmins \n";
print STDERR " Last saved record (HMC lslparutil time) :
$$last_rec ; HMC time : $t \n";
print "$act_time: time issue 1 : $host:$managedname $loadhours $loadmins
\n" if $DEBUG ;
print " Last saved record (HMC lslparutil time) :
$$last_rec ; HMC time : $t \n" if $DEBUG ;
$loadhours = 3;
}
The initial
load then ran successfully.
Then we
changed the code back to its previous configuration:
if ( $loadhours <= 0 || $loadmins <=
0) { # workaround as this sometimes is
negative , need to check it out ...
my $t1 = localtime($$last_rec);
my $t2 = localtime($t);
print STDERR "$act_time: time issue
1 : $host:$managedname $loadhours
$loadmins \n";
print STDERR " Last saved record (HMC lslparutil time) :
$$last_rec ; HMC time : $t \n";
print "$act_time: time issue 1 : $host:$managedname $loadhours $loadmins
\n" if $DEBUG ;
print " Last saved record (HMC lslparutil time) :
$$last_rec ; HMC time : $t \n" if $DEBUG ;
$loadhours = 3;
$loadmins = 140;
}
After which,
all subsequent loads worked as expected! Fortunately my colleague, Nathan
Edwards, had already hit this bug a while ago and was able to help me. Thanks
again Nathan!
According to
Pavel Hampel (lpar2rrd developer), the next version of lpar2rrd (2.66) will fix
this issue.
Tags:
numeric
line
ref
"strict
le
at
""
string
while
a
can't
in
as
scalar
isn't
532.
/home/lpar2rrd/lpar2rrd/l...
("")
533.
refs"
(<=)
argument
use