[LON-CAPA-cvs] cvs: loncom /interface printout.pl

foxr lon-capa-cvs-allow@mail.lon-capa.org
Mon, 10 Mar 2008 10:24:49 -0000


foxr		Mon Mar 10 06:24:49 2008 EDT

  Modified files:              
    /loncom/interface	printout.pl 
  Log:
  BZ 5648???
    1. Increased the timeout to 20 seconds (factored that out into
       $busy_wait_timeout at the top of the file.
    2. Output a warning message if the timeout triggered.
  
  Suggest seeing if this output occurs on the exams in question in that bug.
  
  
  
  
Index: loncom/interface/printout.pl
diff -u loncom/interface/printout.pl:1.129 loncom/interface/printout.pl:1.130
--- loncom/interface/printout.pl:1.129	Mon Jan 28 06:24:48 2008
+++ loncom/interface/printout.pl	Mon Mar 10 06:24:49 2008
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 # CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc.
 #
-# $Id: printout.pl,v 1.129 2008/01/28 11:24:48 foxr Exp $
+# $Id: printout.pl,v 1.130 2008/03/10 10:24:49 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -43,6 +43,7 @@
 
 use strict;
 
+my $busy_wait_timeout = 20;
 
 #   Determine if a user is operating as a student for this course/domain.
 #Parameters:
@@ -379,14 +380,14 @@
       my $dvi_file= $name_file; $dvi_file =~ s/\.tex/$name_range\.dvi/;
       &busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
 			 "for $status_statement now LaTeXing file",
-			 \%prog_state,$dvi_file, 10);
+			 \%prog_state,$dvi_file, $busy_wait_timeout);
       if ($tableofcontents eq 'yes') {
       &busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
 			 "for $status_statement First LaTeX of file for table of contents",
-			 \%prog_state,$dvi_file, 10);
+			 \%prog_state,$dvi_file, $busy_wait_timeout);
       &busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
 			 "for $status_statement Second LaTeX of file for table of contents",
-			 \%prog_state,$dvi_file,10);
+			 \%prog_state,$dvi_file,$busy_wait_timeout);
       } #to create table of contents
       my $idxname=$name_file;
       $idxname=~s/\.tex$/\.idx/;
@@ -396,7 +397,7 @@
 			     \%prog_state,$idxname);
 	  &busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
 			     "for $status_statement now LaTeXing file for index section",
-			     \%prog_state,$dvi_file,10);
+			     \%prog_state,$dvi_file, $busy_wait_timeout);
       } #to create index
       #Do we have a latex error in the log file?
       my $logfilename = $texfile; $logfilename =~ s/\.tex$/\.log/;
@@ -512,14 +513,14 @@
 	      #
 	      &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
 				 "for $status_statement first latex to repaginate",
-				 \%prog_state, $name_file,10);
+				 \%prog_state, $name_file,$busy_wait_timeout);
 	      if ($tableofcontents eq 'yes') {
 		  &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
 				     "for $status_statement second latex to repaginate",
-				     \%prog_state, $name_file,10);
+				     \%prog_state, $name_file,$busy_wait_timeout);
 		  &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
 				     "for $status_statement third latex to repaginate",
-				     \%prog_state, $name_file,10);
+				     \%prog_state, $name_file,$busy_wait_timeout);
 	      }
 	      if ($tableofindex eq 'yes') {
 		  my $idxname = $latex_file;
@@ -529,7 +530,7 @@
 				     \%prog_state, $idxname);
 		  &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
 				     "for $status_statement now Recreting index (latex)",
-				     \%prog_state, $dvi_file,10);
+				     \%prog_state, $dvi_file,$busy_wait_timeout);
 
 	      }
 	      &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
@@ -685,14 +686,14 @@
 	      &repaginate($new_name_file, $latex_file,  $numberofcolumns);
 	      &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
 				 "for $status_statement first latex to repaginate",
-				 \%prog_state, $name_file,10);
+				 \%prog_state, $name_file, $busy_wait_timeout);
 	      if ($tableofcontents eq 'yes') {
 		  &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
 				     "for $status_statement second latex to repaginate",
-				     \%prog_state, $name_file,10);
+				     \%prog_state, $name_file,  $busy_wait_timeout);
 		  &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
 				     "for $status_statement third latex to repaginate",
-				     \%prog_state, $name_file,10);
+				     \%prog_state, $name_file, $busy_wait_timeout);
 	      }
 	      if ($tableofindex eq 'yes') {
 		  my $idxname = $latex_file;
@@ -702,7 +703,7 @@
 				     \%prog_state, $idxname);
 		  &busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
 				     "for $status_statement now Recreting index (latex)",
-				     \%prog_state, $dvi_file,10);
+				     \%prog_state, $dvi_file, $busy_wait_timeout);
 	      }
 	      &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
 				 "for $status_statement dvips to repaginate",
@@ -823,6 +824,13 @@
 	    if ($size == $last_size) {
 		$unchanged_time++;
 		if ($timeout && ($unchanged_time > $timeout)) {
+		    print "<h1>Operation timed out!!!</h1>\n";
+		    print "<p>Executing $command, The output file $output_file did not grow\n";
+		    print "after $timeout seconds.  This <em>may</em> indicate $command\n";
+		    print "is in an infinite loop.";
+		    print "See if printing fewer copies helps.  Please contact LonCAPA\n";
+		    print "support about this in any event";
+		    print "</p>";
 		    kill(9, $pid); # Reaper will do the rest...I hope there's errors in the log.
 		}
 	    } else {