Bio-Grid-Run-SGE
view release on metacpan or search on metacpan
lib/Bio/Grid/Run/SGE/Log/Analysis.pm view on Meta::CPAN
return;
}
sub subject {
my $self = shift;
my $conf = $self->config;
my $env = $self->env;
return
'['
. localtime() . ']['
. $env->{job_id} . ']['
. $self->log_status . '] '
. $env->{job_name_save} . ' ('
. $self->local_user() . ')';
}
sub log_status {
my ($self) = @_;
my $status;
if ( !$self->num_jobs || $self->num_jobs_failed == $self->num_jobs ) {
$status = 'ALL ERR';
} elsif ( $self->num_jobs_failed ) {
$status = $self->num_jobs_failed . '/' . $self->num_jobs . ' ERR';
} else {
$status = 'ALL OK';
}
return $status;
}
sub local_user {
return $ENV{SGE_O_LOGNAME} && $ENV{SGE_O_HOST}
? join( '@', $ENV{SGE_O_LOGNAME}, $ENV{SGE_O_HOST} )
: join( '@', $ENV{USER}, ( $ENV{HOSTNAME} || hostname() ) );
}
sub gen_report {
my ( $self, $full ) = @_;
my @task_report = @{ $self->_task_log };
@task_report = ( @task_report[ 0 .. 13 ], '...' ) if ( @task_report > 17 && !$full );
return join( "\n", $self->subject(), '', @{ $self->_log }, '', @task_report ) . "\n";
}
sub restart_script {
my ($self) = @_;
return join( "\n", @{ $self->_cmd_script } ) . "\n";
}
sub write {
my ($self) = @_;
my $cmd_f = $self->failed_restart_file;
open my $cmd_fh, '>', $cmd_f or confess "Can't open filehandle: $!";
print $cmd_fh $self->restart_script;
$cmd_fh->close;
chmod 0755, $cmd_f;
my $log_f = $self->failed_log_file;
open my $log_fh, '>', $log_f or confess "Can't open filehandle: $!";
print $log_fh $self->gen_report(1);
$log_fh->close;
#CREATE SCRIPT TO UPDATE RERUN JOBS
$self->_write_update_script;
}
sub _write_update_script {
my ($self) = @_;
my $conf = $self->config;
my $env = $self->env;
my @post_log_cmd = ( $conf->{submit_bin} );
push @post_log_cmd, '-S', $env->{perl_bin};
push @post_log_cmd, '-N', join( '_', 'ERRpost', $env->{job_id}, $env->{job_name_save} );
push @post_log_cmd, '-e', $conf->{stderr_dir};
push @post_log_cmd, '-o', $conf->{stdout_dir};
push @post_log_cmd, $env->{worker_env_script};
push @post_log_cmd, $env->{script_bin}, '--stage', 'log', '--job_id', $env->{job_id},
$env->{worker_config_file};
my $update_log_file = $self->failed_update_file;
open my $update_log_fh, '>', $update_log_file or confess "Can't open filehandle: $!";
print $update_log_fh join( " ", "cd", "'" . $conf->{working_dir} . "'", '&&', @post_log_cmd ), "\n";
$update_log_fh->close;
chmod 0755, $update_log_file;
return;
}
__PACKAGE__->meta->make_immutable();
( run in 1.164 second using v1.01-cache-2.11-cpan-0d23b851a93 )