Speed up the jobset eval list a bit

[?]
Apr 15, 2012, 10:11 PM
KJC7RKIEGIR62HPUILVCORKOFYTIAVNPHU3U2CDS36ZEQA7T7UBAC

Dependencies

  • [2] HFJPPMTU Cleanup
  • [3] RSEGBU6C Hydra/20: Jobset clone feature
  • [4] KG5AMUMG Cleanup
  • [5] Q4VDOA76 Replace last 5 builds on jobset page with last 5 evaluations. Moved hide/unhide and evaluate options to jobset topmenu.
  • [6] RWFCW6ZN In the jobset evals lists, show what inputs changed between consecutive evals
  • [*] 3HZY24CX * Make jobsets viewable under
  • [*] IK53RV4V

Change contents

  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 333
    [3.200][3.200:896](),[3.896][3.117:145](),[3.145][3.920:948](),[3.920][3.920:948](),[3.948][3.146:158]()
    { order_by => "id DESC"
    , '+select' => # !!! Slow - should precompute this.
    [ "(select count(*) from JobsetEvalMembers where eval = me.id)"
    , "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 0))"
    , "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 1))"
    , "(select count(*) from JobsetEvalMembers where eval = me.id and exists(select 1 from Builds b where b.id = build and b.finished = 1 and b.buildStatus = 0))"
    ]
    , '+as' => [ "nrBuilds", "nrScheduled", "nrFinished", "nrSucceeded" ]
    , rows => $rows + 1
    , offset => $offset
    });
    [3.200]
    [3.158]
    { order_by => "id DESC", rows => $rows + 1, offset => $offset });
  • edit in src/lib/Hydra/Controller/Jobset.pm at line 337
    [2.25]
    [2.25]
    my $prev;
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 340
    [3.288][3.288:323]()
    my $prev = $evals[$n + 1];
    [3.288]
    [3.323]
    # Get stats for this eval.
    my $nrBuilds = $cur->jobsetevalmembers->count;
    my $nrScheduled = $cur->builds->search({finished => 0})->count;
    my $nrSucceeded = $cur->builds->search({finished => 1, buildStatus => 0})->count;
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 359
    [2.212][3.1367:1376](),[3.1367][3.1367:1376](),[3.1376][2.213:232]()
    push @res,
    [2.212]
    [2.232]
    my $e =
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 362
    [2.259][2.259:368]()
    , diff => defined $prev ? $cur->get_column("nrSucceeded") - $prev->get_column("nrSucceeded") : 0
    [2.259]
    [2.368]
    , nrBuilds => $nrBuilds
    , nrScheduled => $nrScheduled
    , nrSucceeded => $nrSucceeded
    , nrFailed => $nrBuilds - $nrSucceeded - $nrScheduled
    , diff => defined $prev ? $nrSucceeded - $prev->{nrSucceeded} : 0
  • edit in src/lib/Hydra/Controller/Jobset.pm at line 369
    [2.433]
    [3.1465]
    push @res, $e if $n < $rows;
    $prev = $e;
  • replacement in src/lib/Hydra/Controller/Jobset.pm at line 373
    [3.1476][2.434:477]()
    return [(reverse @res)[0..$rows - 1]];
    [3.1476]
    [3.1560]
    return [reverse @res];
  • replacement in src/root/common.tt at line 442
    [3.1388][3.1388:1739]()
    <span class="label label-success">[% eval.get_column('nrSucceeded') %]</span>
    <span class="label label-important">[% eval.get_column('nrBuilds') - eval.get_column('nrSucceeded') - eval.get_column('nrScheduled') %]</span>
    [% IF eval.get_column('nrScheduled') > 0 %]
    <span class="label">[% eval.get_column('nrScheduled') %]</span>
    [3.1388]
    [3.1739]
    <span class="label label-success">[% e.nrSucceeded %]</span>
    <span class="label label-important">[% e.nrFailed %]</span>
    [% IF e.nrScheduled > 0 %]
    <span class="label">[% e.nrScheduled %]</span>
  • replacement in src/root/common.tt at line 451
    [3.2476][3.2476:2542]()
    [%- ELSIF e.diff < 0 && eval.get_column('nrScheduled') == 0 -%]
    [3.2476]
    [3.2542]
    [%- ELSIF e.diff < 0 && e.nrScheduled == 0 -%]