Crombie Tools
clearjobs.pl
Go to the documentation of this file.
1 #! /usr/bin/env perl
2 
3 use v5.10.1;
4 use strict;
5 
6 my $database = 'mysql -N -ht3serv015.mit.edu -usubmit -psubmitter -Dsubmit_queue';
7 
8 my @inputs;
9 if (@ARGV) {
10  while (@ARGV) {
11  my $file = shift @ARGV;
12  $file .= " " . shift @ARGV;
13  push @inputs, $file;
14  }
15 }
16 else {
17  @inputs = `echo 'select file_name, id from check_these;' | $database`;
18 }
19 
20 for (@inputs) {
21  my ($pandav, $dataset, $filename, $id) = m{/paus/([^/]+/\d{3})/([^/]+)/(\S+)\s+(\d+)};
22 
23  my $thisjob = `echo 'select total_events, input_files from queue where id = $id;' | $database`;
24  my ($total_evts, $infiles) = ($thisjob =~ /(\d+)\s+(\S+)/);
25 
26  $infiles =~ s/$filename// || next; # pop out the bad file or run away if it's not there
27  $infiles =~ s/^,|,$// || $infiles =~ s/,,/,/; # Take extra commas or at beginning or end
28 
29  open(my $fh, '<', "/home/cmsprod/catalog/t2mit/$pandav/$dataset/Files") || die "No files for $pandav $dataset: $!";
30  for (<$fh>) {
31  if (/$filename\s+(\d+)/) {
32  my $numevents = $1;
33  my $newevents = $total_evts - $numevents;
34  say qq(update queue set input_files = '$infiles', total_events = $newevents where id = $id);
35  `echo "update queue set input_files = '$infiles', total_events = $newevents where id = $id;" | $database` if (! $ENV{norun});
36  }
37  }
38 }