[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 {