Remove obsolete Builds columns and provide accurate "Running builds"

[?]
Oct 27, 2015, 2:37 PM
TPNHTE5VJ36IPKMFENDERDBFBHLYFXOVNDLV2QSC4G5STPPMBLMAC

Dependencies

  • [2] 36V375MD change content type of logdiff to ->response->content_type('application/json');
  • [3] V3UMEC5J Fix display of non-aggregate builds
  • [4] J5ITV54P Make restartBuilds faster
  • [5] MQQ5KZV3 Status page: Show running builds rather than build steps
  • [6] YF3HTIPF Use partial indexes
  • [7] 5JB5DKQL Don't repeat links to build step logs
  • [8] VZCNKQSB Remove superfluous check
  • [9] 4CQWOODY Don't abort steps that have an unsupported system type
  • [10] 53IMJNBB Add isChannel column and meta attribute.
  • [11] T6KISLR6 Fix indentation
  • [12] WE5Q2NVI Allow build to be bumped to the front of the queue via the web interface
  • [13] T5BIOVJE Add support for tracking custom metrics
  • [14] JTHWA6AM Rename aggregate members to constituents
  • [15] G2T4WAHI Store the inputs of each evaluation in the database
  • [16] CMU3YKOU * Store the release name.
  • [17] IK2UBDAU Revive jobset scheduling
  • [18] GS4SFHCP templates: Use uri_for to reference static paths.
  • [19] E5DMQRPO Remove unnecessary whitespace in the HTML output
  • [20] FHF6IZJQ * Basic release management: releases are now dynamically computed as
  • [21] SJLEZFC4 check getHydraPath in stead of Envvar HYDRA_DBI directly
  • [22] TQKGQ5R3
  • [23] WRIU3S5E * UI for cloning builds (not functional yet).
  • [24] EX4FXA5T Handle active build steps of aborted builds properly
  • [25] LZVO64YG Merge in the first bits of the API work
  • [26] CLJQCY2X * Store info about all the build actions and allow them to be
  • [27] CS7T2XFI
  • [28] YFYRNNQU Use <h3> for running/failed build steps
  • [29] VG4QG336 Remove tablesorter
  • [30] UYWFRWQ6 Sort constituents by job name
  • [31] EYNG4EL4 * Regenerate the bindings from a clean sqlite database.
  • [32] MGOGOKQP add tracker html code via HYDRA_TRACKER
  • [33] QWB5ON4D remove old line
  • [34] ZI535LI6 * hydra: 'new' UI for project/jobset/job/build
  • [35] JARRBLZD Bootstrapify the Hydra forms (except the project and jobset edit pages)
  • [36] K22TMPH5 Make the info tables less compressed
  • [37] TLZ2SPBR
  • [38] BIVZGPUT Optimise clickable rows
  • [39] VJHIHMEH * Store the meta.longDescription and meta.license attributes in the
  • [40] L2E6EVE2 * Merged the Build and Job tables.
  • [41] XJRJ4J7M Add user registration
  • [42] YTIDBFGU Drop unused "disabled" columns
  • [43] NP7IOJ4Q Flesh out the API a bit
  • [44] S6OISBQ3 * Mark the "current" builds in a jobset, i.e. those corresponding to
  • [45] ODNCGFQ5 * Improved the navigation bar: don't include all projects (since that
  • [46] R6B5CAFF Let Builds.timestamp refer to the time the build was added
  • [47] ZVTSOVHN * Support Subversion checkouts.
  • [48] FPK5LF53 * Put the project-related actions in a separate controller. Put the
  • [49] VHV6GI4L Add a jobset eval action to restart all aborted/cancelled builds
  • [50] VBWHG272 Re-add the history tab (store size and build time), now as lazy-loaded tab on build page.
  • [51] U2X3Y53G make sure status images always display for a list of builds
  • [52] 24BMQDZA Start of single-process hydra-queue-runner
  • [53] 3XTHEUMP * Implemented the clone feature.
  • [54] AHTEIK7G * Added a maintainers field to the Builds table.
  • [55] R5D7DZPE
  • [56] 4SFOPTHW Use query_params instead of params
  • [57] W74RIXTJ Show inputs and input changes on the jobset eval page
  • [58] 62MQPRXC Pass null values to libpqxx properly
  • [59] SHBLLAVH * More global substitution.
  • [60] BOAFFKUX Active build steps: Make the rows clickable
  • [61] UJOSXBZI Record which build a failed build step was propagated from
  • [62] B3UW2ZRB Restart jobset evals efficiently
  • [63] SHIENRAL Clean up root controller
  • [64] BKOIYITR added some json responses
  • [65] LBNVQXUB * Build the /build stuff in a separate controller.
  • [66] ZTQEU5QS Hydra: Add support for maxSilent meta attribute (also already added timeout, but not implemented the actual timeout for the build yet)
  • [67] RU7AQO7U * Role-based access control. Only admins can create projects. Only
  • [68] FTPCV25M Store aggregate members in the database
  • [69] ZIIXICG7 Make the outputs' outpaths available via the Build JSON API
  • [70] ZK76B5ZZ Load the queue in order of global priority
  • [71] V4RNHJNR * Add a link to each project's homepage. Suggested by karltk.
  • [72] S66BOMVU * Added authentication.
  • [73] QNDXPVCI * Store the jobset's nixExprPath and nixExprInput fields in a build to
  • [74] MMDLWWZ2 automatic reload of tail log when build is running
  • [75] HPJKBFZ4 Handle concurrent finishing of the same build
  • [76] IMQRX4MP hydra-eval-jobs: Use JSON instead of XML
  • [77] 6GEU36HW Remove obsolete CSS classes
  • [78] U4TD3AIQ Add support for viewing jobset evaluations
  • [79] PCKLFRT5 Support push notification of repository changes
  • [80] Y6AHH4TH Remove the logfile and logSize columns from the database
  • [81] CQTN62OH Die tabs die
  • [82] SB2V735V Keep track of the database schema version
  • [83] CEARA7OH * hydra: show running buildsteps on build page
  • [84] YMNEN6YY Queue: Remove the scheduling priority
  • [85] YLLP6LP7 Remove the related builds tab
  • [86] 5AIYUMTB Basic remote building
  • [87] O5DYTVGA Add jobset/job menus on buid log pages
  • [88] D3DIBMOK * For products that are directories (like manuals), allow a default
  • [89] IK53RV4V
  • [90] VQISTKOP hydra-queue-runner: Use substitutes
  • [91] HTL6HIBM machine-status: Read /etc/nix.machines instead of using the BuildMachines table
  • [92] 6BLUKEQ2 * Caching of "path" inputs, and fake a revision number for those.
  • [93] LCKWLQW3 * In Sqlite "release" is now a keyword, so use "release_" instead.
  • [94] TW5ZQX5Z * Move up the build products in the builds page, since they're more
  • [95] ZLQL62FK Only show "Running build steps" if there are running build steps
  • [96] KAZWI5G4 * hydra: buildpage, show changes since last build/successful build
  • [97] N2ZF5JUL Use a different icon for aborted builds
  • [98] 36M6DGIT Show the runtime/build dependencies in the build page
  • [99] GNIEG2GC * Disambiguate jobs by jobset name. I.e. jobs with the same name in
  • [100] 3E6IP3R3 * Add the name of the jobset to ReleaseSetJobs, otherwise we can't
  • [101] K42RSSSI
  • [102] KOTB7BKV
  • [103] HN3V252L On the build page, show how many aggregate constituents failed
  • [104] HRAFVVOE make logo configurable via HYDRA_LOGO env var
  • [105] PZL3SZM3 Give every page a consistent title
  • [106] S5PV6IIM * Represent jobs explicitly in the DB.
  • [107] B72GLND4
  • [108] OS2MRE4J Restore build and eval IDs.
  • [109] H7CNGK4O * Log evaluation errors etc. in the DB.
  • [110] Z6MDQIGO * A quick (non-Web 2.0) interface to manually add builds to a release.
  • [111] 76LYER47 Hide build IDs from build lists
  • [112] WOHG5MJD hydra: catalyst plain view doesn;t work with data => 0, so put some whitespace around it
  • [113] 2DHE2ZAK Allow Hydra to run as a private instance by requiring a login.
  • [114] 37R34XJO * Negative caching: don't perform a build if a dependency already
  • [115] 6QRHXIM3 * Speed up the jobset index page. Especially the query to get the
  • [116] SHYRGAWZ hydra: when no external url is given for diff's of git/hg input, revert to a diff done on a local available clone
  • [117] R2PON6R7 Allow non-admin users to see the machine status page
  • [118] YAPITGB3 * Boolean inputs.
  • [119] 2DGIP6L4 Cleanup build serialization
  • [120] BD3GRK4B * Get rid of "positive failures" and separate log phases.
  • [121] 2GUAKGTB Fix indentation of build.tt
  • [122] TWVSALRL * Allow the maximum number of concurrent builds per platform to be
  • [123] JM3DPYOM generated schema with new dbix class schema loader, grrrrrr
  • [124] BB2KXLXZ Move the build time chart to the job page
  • [125] 3SQCOHZN * minor performance tweaks
  • [126] MHVIT4JY Split hydra-queue-runner.cc more
  • [127] TH674WKJ add log diff to compare logs to previous builds
  • [128] JYZEGF56 Create Builds with iscurrent set
  • [129] YR2IM6Y5 Temporarily disable machines after a connection failure
  • [130] OEPUOUNB Using twitter bootstrap for more consistent looks for Hydra
  • [131] BCDHO4OU Set propagatedFrom for cached failed build steps
  • [132] HPEG2RHV Merge the BuildResultInfo table into the Builds table
  • [133] 3466DZDE logdiff now support bzipped logs for logdiff
  • [134] FQQRJUO4 Mark builds as busy
  • [135] ECBA3GQO * Make the schema class names match the case of the SQL table names.
  • [136] HH3LID6L Re-implement log size limits
  • [137] 4CELXP7P Remove the longDescription field
  • [138] XHK7IGYI * hdyra: show last succeeded build and changes since on build status summary if build has failed
  • [139] PMNWRTGJ Add multiple output support
  • [140] MOX7XJ2E Merge the BuildSchedulingInfo table into the Builds table
  • [141] 3PNG7NIB Remove trailing whitespace
  • [142] R7MDDCB2 Some unnecessary job names
  • [143] EFWN7JBV * Added a status page that shows all the currently executing build steps.
  • [144] 3ZCEPLNO
  • [145] BHZXGT2H * Channels: provide an index page that lists all the packages in the
  • [146] 4QCXGR4W Tabify the eval page
  • [147] 6KIJX24R Get rid of unnecessary [%- and -%] tags
  • [148] J5UVLXOK * Start of a basic Catalyst web interface.
  • [149] 4S5JF5JP Use latest DBIx::Class::Schema::Loader
  • [150] YTZOC7C5 * Editing of jobset inputs.
  • [151] 4WZQW2N6 Fix indentation and get rid of some unnecessary whitespace in the output
  • [152] N45RZUQ6 Reduce I/O in build listings by only fetching required columns
  • [*] OOQ2D3KC * Refactoring: move fetchInput out of hydra_scheduler into a separate
  • [*] 2GK5DOU7 * Downloading closures.
  • [*] N22GPKYT * Put info about logs / build products in the DB.
  • [*] D5QIOJGP * Move everything up one directory.

Change contents

  • replacement in src/hydra-queue-runner/builder.cc at line 113
    [11.3922][11.3922:3985]()
    building. Also, mark the selected build as busy. */
    [11.3922]
    [11.3985]
    building. */
  • edit in src/hydra-queue-runner/builder.cc at line 117
    [11.4131][11.4131:4224]()
    txn.parameterized("update Builds set busy = 1 where id = $1")(build->id).exec();
  • replacement in src/hydra-queue-runner/builder.cc at line 343
    [11.12527][11.12527:12696]()
    ("update Builds set finished = 1, busy = 0, buildStatus = $2, startTime = $3, stopTime = $4, isCachedBuild = $5 where id = $1 and finished = 0")
    [11.12527]
    [11.12696]
    ("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $4, isCachedBuild = $5 where id = $1 and finished = 0")
  • edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 162
    [11.92][11.178:254]()
    txn.exec("update Builds set busy = 0 where finished = 0 and busy = 1");
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 311
    [11.600][8.0:183]()
    ("update Builds set finished = 1, busy = 0, buildStatus = $2, startTime = $3, stopTime = $4, size = $5, closureSize = $6, releaseName = $7, isCachedBuild = $8 where id = $1")
    [11.600]
    [11.18032]
    ("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $4, size = $5, closureSize = $6, releaseName = $7, isCachedBuild = $8 where id = $1")
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 128
    [11.23444][11.23444:23604]()
    ("update Builds set finished = 1, busy = 0, buildStatus = $2, startTime = $3, stopTime = $3, errorMsg = $4 where id = $1 and finished = 0")
    [11.23444]
    [11.23604]
    ("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $3, errorMsg = $4 where id = $1 and finished = 0")
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 204
    [11.26686][9.213:381]()
    ("update Builds set finished = 1, busy = 0, buildStatus = $2, startTime = $3, stopTime = $3, isCachedBuild = 1 where id = $1 and finished = 0")
    [11.26686]
    [11.26855]
    ("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $3, isCachedBuild = 1 where id = $1 and finished = 0")
  • edit in src/lib/Hydra/Controller/API.pm at line 41
    [11.1427][11.1427:1483]()
    $result->{'busy'} = $build->get_column("busy");
  • replacement in src/lib/Hydra/Controller/API.pm at line 116
    [11.3740][11.303:435]()
    my @builds = $c->model('DB::Builds')->search({finished => 0}, {rows => $nr, order_by => ["busy DESC", "priority DESC", "id"]});
    [11.3740]
    [11.1356]
    my @builds = $c->model('DB::Builds')->search({finished => 0}, {rows => $nr, order_by => ["priority DESC", "id"]});
  • edit in src/lib/Hydra/Controller/API.pm at line 133
    [11.35][11.4459:4508](),[11.324][11.4459:4508](),[11.4459][11.4459:4508](),[11.4508][11.1486:1487](),[11.1487][11.4508:4596](),[11.4508][11.4508:4596](),[11.4596][11.325:486]()
    };
    $c->forward('Hydra::View::Plain');
    }
    sub nrrunning : Chained('api') PathPart('nrrunning') Args(0) {
    my ($self, $c) = @_;
    my $nrRunningBuilds = $c->model('DB::Builds')->search({finished => 0, busy => 1 })->count();
    $c->stash->{'plain'} = {
    data => "$nrRunningBuilds"
  • edit in src/lib/Hydra/Controller/API.pm at line 204
    [11.153][11.153:198](),[11.198][11.2705:2781](),[11.2781][11.150:173](),[11.150][11.150:173](),[11.173][11.6138:6139](),[11.230][11.6138:6139](),[11.6138][11.6138:6139](),[11.6139][11.231:418](),[11.418][11.2782:2783](),[11.2783][11.418:806](),[11.418][11.418:806](),[11.806][11.2784:2958](),[11.2958][11.1028:1127](),[11.1028][11.1028:1127](),[11.1127][2.0:48](),[2.48][11.1127:1228](),[11.1127][11.1127:1228](),[11.1228][11.239:243]()
    sub readNormalizedLog {
    my ($file) = @_;
    my $pipe = (-f "$file.bz2" ? "cat $file.bz2 | bzip2 -d" : "cat $file");
    my $res = `$pipe`;
    $res =~ s/\/nix\/store\/[a-z0-9]*-/\/nix\/store\/...-/g;
    $res =~ s/nix-build-[a-z0-9]*-/nix-build-...-/g;
    $res =~ s/[0-9]{2}:[0-9]{2}:[0-9]{2}/00:00:00/g;
    return $res;
    }
    sub logdiff : Chained('api') PathPart('logdiff') Args(2) {
    my ($self, $c, $buildid1, $buildid2) = @_;
    my $diff = "";
    my $build1 = getBuild($c, $buildid1);
    notFound($c, "Build with ID $buildid1 doesn't exist.")
    if !defined $build1;
    my $build2 = getBuild($c, $buildid2);
    notFound($c, "Build with ID $buildid2 doesn't exist.")
    if !defined $build2;
    if (-f $build1->logfile && -f $build2->logfile) {
    my $logtext1 = readNormalizedLog($build1->logfile);
    my $logtext2 = readNormalizedLog($build2->logfile);
    $diff = diff \$logtext1, \$logtext2;
    } else {
    $c->response->status(404);
    }
    $c->response->content_type('text/x-diff');
    $c->stash->{'plain'} = { data => (scalar $diff) || " " };
    $c->forward('Hydra::View::Plain');
    }
  • replacement in src/lib/Hydra/Controller/Build.pm at line 170
    [11.156][11.1433:1522]()
    $c->stash->{reload} = !$c->stash->{build}->finished && $c->stash->{build}->busy;
    [11.156]
    [11.274]
    $c->stash->{reload} = !$c->stash->{build}->finished;
  • replacement in src/lib/Hydra/Controller/Root.pm at line 47
    [11.54][11.2507:2622]()
    $c->stash->{nrRunningBuilds} = $c->model('DB::Builds')->search({ finished => 0, busy => 1 }, {})->count();
    [11.54]
    [11.2622]
    $c->stash->{nrRunningBuilds} = $c->model('DB::Builds')->search(
    { finished => 0, 'buildsteps.busy' => 1 },
    { join => 'buildsteps', select => ["id"], distinct => 1 })->count();
  • replacement in src/lib/Hydra/Controller/Root.pm at line 94
    [11.22015][11.2834:2949]()
    entity => [$c->model('DB::Builds')->search({finished => 0}, { order_by => ["globalpriority desc", "id"]})]
    [11.22015]
    [11.22247]
    entity => [$c->model('DB::Builds')->search(
    { finished => 0 },
    { order_by => ["globalpriority desc", "id"],
    , columns => [@buildListColumns]
    })]
  • replacement in src/lib/Hydra/Controller/Root.pm at line 109
    [11.22362][5.0:120]()
    entity => [$c->model('DB::Builds')->search({finished => 0, busy => 1}, { order_by => ["priority DESC", "id"]})]
    [11.22362]
    [11.23091]
    entity => [$c->model('DB::Builds')->search(
    { finished => 0, "buildsteps.busy" => 1 },
    { order_by => ["globalpriority DESC", "id"],
    join => "buildsteps",
    columns => [@buildListColumns]
    })]
  • replacement in src/lib/Hydra/Controller/Root.pm at line 140
    [11.480][11.480:543]()
    { finished => 0, 'me.busy' => 1, 'build.busy' => 1, },
    [11.480]
    [11.543]
    { finished => 0, 'me.busy' => 1, },
  • edit in src/lib/Hydra/Helper/AddBuilds.pm at line 453
    [11.2478][11.4587:4638](),[11.19689][11.4587:4638](),[11.4587][11.4587:4638]()
    , busy => 0
    , locker => ""
  • replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 32
    [11.634][11.1148:1326]()
    Readonly our @buildListColumns => ('id', 'finished', 'timestamp', 'stoptime', 'project', 'jobset', 'job', 'nixname', 'system', 'priority', 'busy', 'buildstatus', 'releasename');
    [11.634]
    [11.3595]
    Readonly our @buildListColumns => ('id', 'finished', 'timestamp', 'stoptime', 'project', 'jobset', 'job', 'nixname', 'system', 'buildstatus', 'releasename');
  • edit in src/lib/Hydra/Helper/Nix.pm at line 458
    [4.173][4.173:224]()
    , busy => 0
    , locker => ""
  • replacement in src/lib/Hydra/Schema/Builds.pm at line 123
    [10.210][11.8491:8508](),[11.545][11.8491:8508](),[11.8491][11.8491:8508]()
    is_nullable: 1
    [10.210]
    [11.8522]
    is_nullable: 0
  • edit in src/lib/Hydra/Schema/Builds.pm at line 148
    [11.3033][11.4273:4346](),[11.4273][11.4273:4346]()
    data_type: 'integer'
    default_value: 0
    is_nullable: 0
    =head2 busy
  • edit in src/lib/Hydra/Schema/Builds.pm at line 152
    [11.4406][11.4406:4475]()
    =head2 locker
    data_type: 'text'
    is_nullable: 1
    =head2 logfile
  • edit in src/lib/Hydra/Schema/Builds.pm at line 153
    [11.8727][11.8010:8030](),[11.8030][11.8768:8785](),[11.8768][11.8768:8785](),[11.4553][11.4553:4554]()
    data_type: 'text'
    is_nullable: 1
  • replacement in src/lib/Hydra/Schema/Builds.pm at line 233
    [10.226][10.226:294]()
    { data_type => "integer", default_value => 0, is_nullable => 1 },
    [10.226]
    [11.851]
    { data_type => "integer", default_value => 0, is_nullable => 0 },
  • edit in src/lib/Hydra/Schema/Builds.pm at line 243
    [11.3122][11.4673:4751](),[11.4673][11.4673:4751]()
    { data_type => "integer", default_value => 0, is_nullable => 0 },
    "busy",
  • edit in src/lib/Hydra/Schema/Builds.pm at line 244
    [11.4819][11.4819:4831](),[11.4831][11.9077:9122](),[11.240][11.9077:9122](),[11.9122][11.4832:4890]()
    "locker",
    { data_type => "text", is_nullable => 1 },
    "logfile",
    { data_type => "text", is_nullable => 1 },
  • replacement in src/lib/Hydra/Schema/Builds.pm at line 547
    [11.3378][10.295:437]()
    # Created by DBIx::Class::Schema::Loader v0.07043 @ 2015-09-10 17:34:23
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:JRelp13Cyfi+QVxC92xuqQ
    [11.3378]
    [11.4481]
    # Created by DBIx::Class::Schema::Loader v0.07043 @ 2015-10-27 13:54:16
    # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iN9vwO5i3dURKOTgaPTHxw
  • edit in src/lib/Hydra/Schema/Builds.pm at line 628
    [11.606][11.606:622]()
    'busy',
  • replacement in src/root/build.tt at line 7
    [11.6589][3.0:42]()
    [% isAggregate = constituents.size > 0 %]
    [11.3466]
    [11.11433]
    [%
    isAggregate = constituents.size > 0;
    steps = build.buildsteps;
    busy = 0;
    FOR step IN steps; IF step.busy; busy = 1; END; END;
    %]
  • replacement in src/root/build.tt at line 26
    [11.11774][7.0:53]()
    [% FOREACH step IN build.buildsteps.reverse %]
    [11.11774]
    [11.11819]
    [% FOREACH step IN steps.reverse %]
  • replacement in src/root/build.tt at line 122
    [11.68][11.1862:1968](),[11.1862][11.1862:1968]()
    [% IF build.buildsteps %]<li><a href="#tabs-buildsteps" data-toggle="tab">Build steps</a></li>[% END %]
    [11.68]
    [11.1968]
    [% IF steps %]<li><a href="#tabs-buildsteps" data-toggle="tab">Build steps</a></li>[% END %]
  • replacement in src/root/build.tt at line 146
    [11.168][11.168:230]()
    [% INCLUDE renderStatus build=build icon=0 %]
    [11.168]
    [11.230]
    [% INCLUDE renderStatus build=build icon=0 busy=busy %]
  • replacement in src/root/build.tt at line 237
    [11.1107][11.4947:4971]()
    [% IF build.busy %]
    [11.1107]
    [11.4971]
    [% IF busy %]
  • replacement in src/root/build.tt at line 244
    [11.70][11.5101:5185](),[11.5101][11.5101:5185]()
    [% IF build.buildsteps && build.buildstatus != 0 && build.buildstatus != 6 %]
    [11.70]
    [11.5185]
    [% IF steps && build.buildstatus != 0 && build.buildstatus != 6 %]
  • replacement in src/root/build.tt at line 431
    [11.4688][11.12299:12327]()
    [% IF build.buildsteps %]
    [11.4688]
    [11.12327]
    [% IF steps %]
  • replacement in src/root/common.tt at line 101
    [11.1876][11.1876:1994]()
    [% INCLUDE renderBuildStatusIcon size=16 busy=(showSchedulingInfo ? 1 : 0) buildstatus=build.buildstatus %]
    [11.1876]
    [11.1994]
    [% INCLUDE renderBuildStatusIcon size=16 buildstatus=build.buildstatus %]
  • replacement in src/root/common.tt at line 105
    [11.2058][11.2058:2195]()
    <td>[% IF build.busy %]<span class="label label-success">Started</span>[% ELSE %]<span class="label">Queued</span>[% END %]</td>
    [11.2058]
    [11.2195]
    <td>[% IF busy %]<span class="label label-success">Started</span>[% ELSE %]<span class="label">Queued</span>[% END %]</td>
  • edit in src/root/common.tt at line 192
    [11.4403][11.4403:4447]()
    busy = busy != undef ? busy : build.busy;
  • replacement in src/root/common.tt at line 213
    [11.4574][11.4574:4590](),[11.4590][11.796:897](),[11.897][11.4231:4244](),[11.1069][11.4231:4244](),[11.1075][11.4231:4244](),[11.4244][11.898:1004]()
    ELSIF busy %]
    <img src="[% c.uri_for("/static/images/help_${size}.png") %]" alt="Busy" class="build-status" />
    [% ELSE %]
    <img src="[% c.uri_for("/static/images/help_${size}.png") %]" alt="Scheduled" class="build-status" />
    [11.4574]
    [11.4591]
    ELSE %]
    <img src="[% c.uri_for("/static/images/help_${size}.png") %]" alt="Queued" class="build-status" />
  • replacement in src/root/common.tt at line 243
    [11.4783][11.4783:4805](),[11.4805][11.2850:2889](),[11.6385][11.2850:2889](),[11.2850][11.2850:2889](),[11.2889][11.4806:4871]()
    ELSIF build.busy %]
    <strong>Build in progress</strong>
    since [% INCLUDE renderDateTime timestamp = build.starttime;
    [11.4783]
    [11.4871]
    ELSIF busy %]
    <strong>Build in progress</strong>[%-
  • replacement in src/root/jobset-eval.tt at line 94
    [11.1456][11.1456:1501]()
    hideProjectName=1 hideJobsetName=1 %]
    [11.1456]
    [11.1501]
    hideProjectName=1 hideJobsetName=1 busy=0 %]
  • replacement in src/root/status.tt at line 10
    [11.1222][5.376:462]()
    [% INCLUDE renderBuildList builds=resource showSchedulingInfo=1 hideResultInfo=1 %]
    [11.1222]
    [5.462]
    [% INCLUDE renderBuildList builds=resource showSchedulingInfo=1 hideResultInfo=1 busy=1 %]
  • edit in src/sql/hydra.sql at line 175
    [11.3588][11.9515:9516](),[11.9515][11.9515:9516](),[11.9516][11.20177:20235](),[11.20235][11.9516:9609](),[11.9516][11.9516:9609](),[11.9609][11.7741:7819]()
    -- FIXME: remove (obsolete with the new queue runner)
    busy integer not null default 0, -- true means someone is building this job now
    locker text, -- !!! hostname/pid of the process building this job?
  • edit in src/sql/hydra.sql at line 176
    [11.9708][11.9708:9768](),[11.7881][11.37615:37616]()
    logfile text, -- if busy, the path of the logfile
  • edit in src/sql/hydra.sql at line 638
    [6.209][6.209:294]()
    create index IndexBuildsOnFinishedBusy on Builds(finished, busy) where finished = 0;
  • file addition: upgrade-43.sql (----------)
    [157.3004]
    alter table Builds drop column busy, drop column locker, drop column logfile;
    drop index IndexBuildsOnFinishedBusy;