]> granicus.if.org Git - pgbadger/commitdiff
Remove parallel processing under Windows platform as the use of waitpid is freezing...
authorDarold Gilles <gilles@darold.net>
Wed, 1 May 2013 14:27:51 +0000 (16:27 +0200)
committerDarold Gilles <gilles@darold.net>
Wed, 1 May 2013 14:27:51 +0000 (16:27 +0200)
pgbadger

index 8746647e23fdf684fd57e89ad8c87ff920463935..febbcd9846c6a45e6f16d96a3d6232e3df1f3325 100755 (executable)
--- a/pgbadger
+++ b/pgbadger
@@ -93,13 +93,15 @@ sub wait_child
 {
         my $sig = shift;
         print STDERR "Received terminating signal ($sig).\n";
-        1 while wait != -1;
-        $SIG{INT} = \&wait_child;
-        $SIG{TERM} = \&wait_child;
-       foreach my $f (@tempfiles) {
-               unlink("$f->[1]") if (-e "$f->[1]");
+       if ($^O !~ /MSWin32|dos/i) {
+               1 while wait != -1;
+               $SIG{INT} = \&wait_child;
+               $SIG{TERM} = \&wait_child;
+               foreach my $f (@tempfiles) {
+                       unlink("$f->[1]") if (-e "$f->[1]");
+               }
+               unlink("$tmp_last_parsed") if ($tmp_last_parsed);
        }
-       unlink("$tmp_last_parsed") if ($tmp_last_parsed);
        _exit(0);
 }
 $SIG{INT} = \&wait_child;
@@ -347,6 +349,14 @@ my $end_top = $top - 1;
 $queue_size ||= 1;
 $job_per_file ||= 1;
 
+if ($^O =~ /MSWin32|dos/i) {
+       if ( ($queue_size > 1) || ($job_per_file > 1) ) {
+               print STDERR "WARNING: parallel processing is not supported on this platform.\n";
+               $queue_size = 1;
+               $job_per_file = 1;
+       }
+}
+
 if ($extension eq 'tsung') {
 
        # Open filehandle
@@ -356,6 +366,7 @@ if ($extension eq 'tsung') {
        }
        print $fh "<sessions>\n";
        $fh->close();
+
 } else {
 
        # Test file creation before going to parse log
@@ -676,6 +687,7 @@ if ( ($queue_size > 1) || ($job_per_file > 1) ) {
 
        # Parse each log file following the multiprocess mode chosen (-j or -J)
        foreach my $logfile ( @given_log_files ) {
+
                while ($child_count >= $parallel_process) {
                        my $kid = waitpid(-1, WNOHANG);
                        if ($kid > 0) {