[padb] r336 committed - Move some code around and add error checking to show_proc_all such tha...

padb at googlecode.com padb at googlecode.com
Wed Nov 25 17:37:41 GMT 2009


Revision: 336
Author: apittman
Date: Wed Nov 25 09:36:55 2009
Log: Move some code around and add error checking to show_proc_all such that
if running proc-summary in watch mode and the target job dies padb doesn't
spew errors at the user.  The outer process correctly reports that the
job has died so all this code needs to do is to not generate perl errors.

http://code.google.com/p/padb/source/detail?r=336

Modified:
  /trunk/src/padb

=======================================
--- /trunk/src/padb	Wed Nov 25 06:21:06 2009
+++ /trunk/src/padb	Wed Nov 25 09:36:55 2009
@@ -7345,7 +7345,10 @@
      if ( $carg->{proc_shows_proc} ) {
          foreach my $proc ( @{$list} ) {
              my $pid = $proc->{pid};
-            open $proc->{handle}, '<', "/proc/$pid/stat";
+            my $handle;
+            if ( open $handle, '<', "/proc/$pid/stat" ) {
+                $proc->{handle} = $handle;
+            }
          }

          open $SFD, '<', '/proc/stat';
@@ -7354,8 +7357,8 @@
          my $stat = <$SFD>;

          foreach my $proc ( @{$list} ) {
-            my $pid = $proc->{pid};
-            my $h   = $proc->{handle};
+            next unless ( defined $proc->{handle} );
+            my $h = $proc->{handle};
              $proc->{stat_start} = <$h>;
              seek $proc->{handle}, 0, 0;
          }
@@ -7386,10 +7389,15 @@
          my $stat = <$SFD>;

          foreach my $proc ( @{$list} ) {
-            my $pid = $proc->{pid};
-            my $h   = $proc->{handle};
+            next unless ( defined $proc->{handle} );
+            my $h = $proc->{handle};
              $proc->{stat_end} = <$h>;
              close $proc->{handle};
+	    # Set handle to undef to prepare for future iterations of the
+	    # loop if being run in watch mode.  Without this handle remains
+	    # set but refers to the closed fd which causes errors next time
+	    # round the loop if the open fails.
+	    $proc->{handle} = undef;
          }

          seek $SFD, 0, 0;
@@ -7414,6 +7422,12 @@
          foreach my $proc ( @{$list} ) {
              my $vp = $proc->{vp};

+            proc_output( $vp, 'load1',  $l1 );
+            proc_output( $vp, 'load5',  $l15 );
+            proc_output( $vp, 'load15', $l15 );
+
+            next unless defined $proc->{stat_end};
+
              proc_output(
                  $vp, 'pcpu',
                  pcpu_total(
@@ -7435,9 +7449,6 @@
                      $proc->{stat_start}, $proc->{stat_end}
                  )
              );
-            proc_output( $vp, 'load1',  $l1 );
-            proc_output( $vp, 'load5',  $l15 );
-            proc_output( $vp, 'load15', $l15 );
          }
      }





More information about the padb-devel mailing list