[Orca-users] Re: rebuild rrd files from percol files

Blair Zajac blair at akamai.com
Mon Feb 5 13:29:37 PST 2001


It appears that the problem causing the

    Use on uninitialized value in array element at (eval X) line 1,
    <DATA> line Y

error messages in Perl 5.6.0 was causing Orca to improperly sort the
input data files for reading.  

Since RRD files cannot accept data older than the latest entered data
point, if Orca improperly sorts the filenames for data loading, once
newer data is entered into the RRD, there will be a gap in the data
even if there is older data that exists.  The only way to get around
this is to apply the attached patch, delete all of the RRD data
files and rerun Orca.

Which version of Perl are you using?

Your e-mail change in the configuration file should not affect this

Please try the patch and let me know if this solves the issues you
are seeing?


Mark Lin wrote:
> Blair:
> >This should work.  Several questions:
> >
> >1) Are you using a non-standard Orcallator install or have anything
> >configured differently than how the INSTALL instructions describe a
> >set up?
> Yes, I did standard installation on all the machine except changing the
> default directory installation.
> >
> >2) Do the percol files have the standard filename format:
> >percol-YYYY-MM-DD?
> >
> Yes, they all have that format.
> >3) At what time do the data gaps appear and how long are they?
> >
> This is where the problem is.  Let me try to explain it.  One of the
> orcallator client lost the NFS mount directory from the orca server for 12
> days.  I realized that later so I remount the NFS from orca server and
> copied those percol data files that were collected when it lost NFS back
> into the NFS mount directory.  Then I rerun orca hoping that it would create
> the rrd data from those missing percol for the past 12 days.  THat didn't
> work.  Then I lost control... :) i deleted all the rrd data for all the
> clients and run orca again in hoping that it will rebuild everything.  Then
> disaster stroke....I lost two days of data for that NFS lost client, and 12
> days of data missing for the rest of the clients.  I do have all the percol
> data, but for all the other clients, orca only build rrd outside the range
> of thd 12 days that single client lost its NFS mount.  Only changes I made
> before I delete all the rrd files and after I delete that rrd file of that
> particular client was a little modification to the orcallator.cfg, i simply
> added an e-mail address in the html output.  Would that change be the cause
> of data gap?
> >4) Do you have some sample plots?
> >
> sorry I dont, we only have internal servers.
> >Regards,
> >Blair
> Regards,
> Mark
> _____________________________________________________________________________________
> Get more from the Web.  FREE MSN Explorer download : http://explorer.msn.com
> -------------------------- eGroups Sponsor -------------------------~-~>
> eLerts
> It's Easy. It's Fun. Best of All, it's Free!
> http://click.egroups.com/1/9699/1/_/804404/_/975510197/
> ---------------------------------------------------------------------_->
-------------- next part --------------
--- ../orca-0.26/src/orca.pl.in	Thu Mar  9 14:49:59 2000
+++ src/orca.pl.in	Mon Feb  5 11:19:09 2001
@@ -965,17 +965,23 @@
     # Create a new list of filenames sorted by subgroup name and
     # inside each subgroup sorted using the filename_compare
-    # configuration option function or by the Perl cmp function.  This
-    # will cause the created plots to appear in subgroup order.  The
-    # compare subroutine expects the input in the $a and $b package
-    # variables.  Since the subroutine was eval'ed in the Orca::Config
-    # package, the sort subroutine needs be in that package.
+    # configuration file function or by the default compare function
+    # that uses cmp to compare filenames.  This will cause the created
+    # plots to appear in subgroup order.  Note that the FIDs are not
+    # being sorted, but the filename the FID references.
+    #
+    # The compare subroutine expects the input in the $a and $b
+    # package variables and since the compare subroutine was eval'ed
+    # in the Orca::Config package, the compare subroutine needs be run
+    # in Orca::Config.  Also, since sort cannot be passed a reference
+    # to a sorting subroutine stored in a hash (i.e. sort $a{b} @c),
+    # use a temporary variable.
     @fids = ();
-      local *Orca::Config::fc = $config_groups{$group_name}{filename_compare};
+      package Orca::Config;
+      my $fc = $config_groups{$group_name}{filename_compare};
       foreach my $subgroup (sort keys %tmp_fids_by_subgroup) {
-        push(@fids,
-             sort Orca::Config::fc @{$tmp_fids_by_subgroup{$subgroup}});
+        push(@fids, sort $fc @{$tmp_fids_by_subgroup{$subgroup}});

More information about the Orca-users mailing list