Robert, can you try the attached patch?
Jean-Louis
McGraw, Robert P wrote:
As a followup, I ran amoverview and removed the WARNINGS messages and it seems
to be working correctly.
Here is a snippet"
date NM TO 08 08 08 08 08 08 08 08 08 08 08
08 08 08 08 08 09 09 09 09 09 09 09 09 09 09 09 09
host disk L0 GO 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 01 02 03 04 05 06 07 08 09 10 11 12
banach / 9 22 3 0 0 1 2 2 2 0 E1 0 0
1 1 1 2 0 1 0 1 2 3 0 0 1 2 2
banach /boot 6 21 1 0 1 1 1 0 1 1 1 0 1
1 1 1 0 1 E0 1 1 1 1 0 1 1 1
bers / 7 24 0 1 1 0 1 1 1 1 0 1 1
1 1 1 0 1 0 1 1 1 1 0 1 1 0 1
bessel / 7 24 0 1 1 0 1 1 1 1 0 1 1
1 1 1 0 1 0 1 1 1 0 1 1 1 0 1
bohr / 7 24 0 1 1 0 1 1 1 1 0 1 1
1 1 1 0 1 0 1 1 1 0 1 1 1 0 1
conon / 6 21 0 1 1 1 1 0 1 1 1 0 1
1 1 1 0 1 0 1 1 1 1 0 1 1 1
Robert
-----Original Message-----
From: McGraw, Robert P
Sent: Monday, September 13, 2010 11:40 AM
To: McGraw, Robert P
Subject: RE: amoverview under 3.1.2
As a followup, I ran amoverview and removed the WARNINGS and it seems
to be working correctly.
Robert
-----Original Message-----
From: owner-amanda-us...@amanda.org [mailto:owner-amanda-
us...@amanda.org] On Behalf Of McGraw, Robert P
Sent: Monday, September 13, 2010 11:24 AM
To: 'amanda-users@amanda.org'
Subject: amoverview under 3.1.2
I have compiled and installed amanda 3.1.2
My dumps ran ok over the weekend with no errors.
But I am getting the following warnings in amoverview.
Robert
** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.
** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.
date 08 08 08 08 08 08 08 08 08 08 08 08 08
08
08 08 09 09 09 09 09 09 09 09 09 09 09 09
host disk 16 17 18 19 20 21 22 23 24 25 26 27 28
29
30 31 01 02 03 04 05 06 07 08 09 10 11 12
banach / 3 0 0 1 2 2 2 0 E1 0 0 1 1
1
2 0 1 0 1 2 3 0 0 1 2 2
** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.
** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.
** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.
banach /boot 1 0 1 1 1 0 1 1 1 0 1 1 1
1
0 1 E0 1 1 1 1 0 1 1 1
** (process:11519): WARNING **: Use of uninitialized value in substr
at
(eval 15) line 3.
_____________________________________________________________________
Robert P. McGraw, Jr.
Manager, Computer System EMAIL: rmcg...@purdue.edu
Purdue University ROOM: MATH-807
Department of Mathematics PHONE: (765) 494-6055
150 N. University Street
West Lafayette, IN 47907-2067
diff --git a/perl/Amanda/Tapelist.swg b/perl/Amanda/Tapelist.swg
index e1e029d..6e39d08 100644
--- a/perl/Amanda/Tapelist.swg
+++ b/perl/Amanda/Tapelist.swg
@@ -35,6 +35,29 @@ use File::Copy;
## package functions
+sub new {
+ my ($filename, $lock ) = @_;
+ my $self = {
+ filename => $filename,
+ lock => $lock,
+ };
+ bless $self, "Amanda::Tapelist";
+
+ # let C read the file
+ C_read_tapelist($filename);
+
+ # and then read it ourselves
+ open(my $fh, "<", $filename) or return $self;
+ $self->{'fh'} = $fh;
+
+ if ($lock) {
+ flock($lock, LOCK_EX);
+ }
+
+ $self->_read_tapelist_fh();
+ return $self;
+}
+
sub read_tapelist {
my ($filename) = @_;
my $self = {
@@ -134,24 +157,35 @@ sub write {
my $new_tapelist_file = $filename . "-new-" . time();
- open(my $fh, ">", $new_tapelist_file) or die("Could not open '$new_tapelist_file' for writing: $!");
+ open(my $fhn, ">", $new_tapelist_file) or die("Could not open '$new_tapelist_file' for writing: $!");
for my $tle (@{$self->{tles}}) {
my $datestamp = $tle->{'datestamp'};
my $label = $tle->{'label'};
my $reuse = $tle->{'reuse'} ? 'reuse' : 'no-reuse';
my $comment = (defined $tle->{'comment'})? (" #" . $tle->{'comment'}) : '';
- print $fh "$datestamp $label $reuse$comment\n";
+ print $fhn "$datestamp $label $reuse$comment\n";
}
- close($fh);
+ close($fhn);
unless (move($new_tapelist_file, $filename)) {
die ("failed to rename '$new_tapelist_file' to '$filename': $!");
}
+ $self->close();
+
# re-read from the C side to synchronize
C_read_tapelist($filename);
return undef;
}
+sub close {
+ my $self = shift;
+
+ return if !exists $self->{'fh'};
+
+ close ($self->{'fh'});
+ delete $self->{'fh'}
+}
+
## private methods
sub _read_tapelist {
diff --git a/server-src/amoverview.pl b/server-src/amoverview.pl
index 4f721e5..5dbd625 100644
--- a/server-src/amoverview.pl
+++ b/server-src/amoverview.pl
@@ -195,13 +195,13 @@ my $top_format = "format TOP =\n\n" .
join(' ', map((/......(..)/)[0], sort keys %dates)) . "\n" .
"\n.\n";
-+ local ($::thishost,$::thisdisk);
+local ($::thishost,$::thisdisk);
my $out_format = "format STDOUT =\n" .
"@" . "<" x ($opt_hostwidth - 1) . ' ' .
"@" . "<" x ($opt_diskwidth - 1) . ' ' .
'@> ' x scalar(keys %dates) . "\n" .
join(', ', '$::thishost', '$::thisdisk',
- map("substr(\$level{\$::thishost}{\$::thisdisk}{'$_'},-2)", sort keys %dates)) . "\n" .
+ map("defined(\$level{\$::thishost}{\$::thisdisk}{'$_'})?substr(\$level{\$::thishost}{\$::thisdisk}{'$_'},-2):' '", sort keys %dates)) . "\n" .
".\n";
eval $top_format;