my $queue_name;
my $text_mode;
+my $debug;
my $debug_children;
sub usage() {
Usage: bex prun [<options>] [[!]<machine-or-class> ...]
Options:
- --debug-children Log stdout and stderr to ./debug.log
+ --debug Log status changes to stderr
+ --debug-children Log stdout and stderr of child processes to ./debug.log
-p, --parallel=<n> Set limit on the number of jobs run in parallel
-q, --queue=<name> Run jobs in the given queue
--text Use plain-text user interface instead of curses
GetOptions(
"q|queue=s" => \$queue_name,
"text!" => \$text_mode,
+ "debug!" => \$debug,
"debug-children!" => \$debug_children,
"p|parallel=i" => \$BEX::Config::max_parallel_jobs,
"help" => \&usage,
}
$_ = <FIFO>;
chomp;
+ print STDERR "<< $_\n" if $debug;
my ($mach, $jid, $stat) = /^! (\S+) (\S+) (\S+)$/;
if (!defined $stat) {
$ui->err("Received invalid status message <$_>");
sub set_host_status($$$) {
my ($ui, $mach, $stat) = @_;
+ print STDERR "H: $mach $stat\n" if $debug;
my $prev_stat = $host_state{$mach};
if (defined $prev_stat) {
$host_cnt{$prev_stat}--;
sub set_job_status($$$$) {
my ($ui, $mach, $jid, $stat) = @_;
+ print STDERR "J: $mach $jid $stat\n" if $debug;
my $prev_stat = $job_state{$mach}{$jid} // 'unknown';
$job_cnt{$mach}{$prev_stat}--;
$job_cnt{'*'}{$prev_stat}--;
if (defined $besti) {
if ($best) {
+ print STDERR "I: Replacing ", $best->{'Host'}, " (pri $bestpri)\n";
delete $best->{'Row'};
}
+ print STDERR "I: Allocated ", $s->{'Host'}, " \@$besti (pri $pri)\n";
$s->{'Row'} = $besti;
$by_row[$besti] = $s;
}