Skip to content
Snippets Groups Projects
Commit b9e16e1c authored by Leo Gordon's avatar Leo Gordon
Browse files

switched to using Time::Piece instead of potentially driver-dependent datetime functions

Conflicts:
	scripts/generate_timeline.pl
parent 1049fb10
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,8 @@ use Getopt::Long;
use List::Util qw(sum);
use POSIX;
use Data::Dumper;
use Time::Piece;
use Time::Seconds; # not sure if seconds-only arithmetic also needs it
use Bio::EnsEMBL::Hive::DBSQL::DBAdaptor;
use Bio::EnsEMBL::Hive::Utils ('script_usage');
......@@ -148,12 +150,21 @@ sub main {
# Get the events from the database
my %events = ();
if ($mode ne 'pending_workers') {
my @tmp_dates = @{$dbh->selectall_arrayref('SELECT DATE_FORMAT(when_started, "%Y-%m-%dT%T"), DATE_FORMAT(when_finished, "%Y-%m-%dT%T"), analysis_id, worker_id, resource_class_id FROM role JOIN worker USING (worker_id)')};
my @tmp_dates = @{$dbh->selectall_arrayref('SELECT when_started, when_finished, analysis_id, worker_id FROM role JOIN worker USING (worker_id)')};
warn scalar(@tmp_dates), " events\n" if $verbose;
foreach my $db_entry (@tmp_dates) {
my ($birth_date, $death_date, $analysis_id, $worker_id, $resource_class_id) = @$db_entry;
my ($when_started, $when_finished, $analysis_id, $worker_id, $resource_class_id) = @$db_entry;
$resource_class_id //= $default_resource_class{$analysis_id};
# temporary Time::Piece values
my $birth_datetime = Time::Piece->strptime( $when_started, '%Y-%m-%d %H:%M:%S');
my $death_datetime = Time::Piece->strptime( $when_finished, '%Y-%m-%d %H:%M:%S');
# string values:
my $birth_date = $birth_datetime->date . 'T' . $birth_datetime->hms;
my $death_date = $death_datetime->date . 'T' . $death_datetime->hms;
my $offset = 0;
if ($mode eq 'workers') {
......@@ -175,11 +186,20 @@ sub main {
$events{$death_date}{$analysis_id} -= $offset if ($offset > 0) and $death_date;
}
} else {
my @tmp_dates = @{$dbh->selectall_arrayref('SELECT DATE_FORMAT(DATE_SUB(min(when_started), INTERVAL pending_sec SECOND), "%Y-%m-%dT%T"), DATE_FORMAT(min(when_started), "%Y-%m-%dT%T"), analysis_id FROM role JOIN worker_resource_usage USING (worker_id) WHERE pending_sec IS NOT NULL AND pending_sec > 0 GROUP BY worker_id')};
my @tmp_dates = @{$dbh->selectall_arrayref('SELECT min(when_started), pending_sec, analysis_id FROM role JOIN worker_resource_usage USING (worker_id) WHERE pending_sec IS NOT NULL AND pending_sec > 0 GROUP BY worker_id')};
warn scalar(@tmp_dates), " events\n" if $verbose;
foreach my $db_entry (@tmp_dates) {
my ($start_pending, $start_running, $analysis_id) = @$db_entry;
my ($when_started, $pending_sec, $analysis_id) = @$db_entry;
# temporary Time::Piece values
my $submitted_datetime = Time::Piece->strptime( $when_started, '%Y-%m-%d %H:%M:%S') - $pending_sec;
my $started_datetime = Time::Piece->strptime( $when_started, '%Y-%m-%d %H:%M:%S');
# string values:
my $start_pending = $submitted_datetime->date . 'T' . $submitted_datetime->hms;
my $start_running = $started_datetime->date . 'T' . $started_datetime->hms;
$events{$start_pending}{$analysis_id} += 1;
$events{$start_running}{$analysis_id} -= 1;
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment