Merge the BuildSchedulingInfo table into the Builds table
[?]
Feb 29, 2012, 1:22 AM
MOX7XJ2E3XISXA7V7T4W6GEAGECGWBZ4PYSLTYBVVR4VAKOI33CQCDependencies
- [2]
ULHEOJO2* Better timeout. - [3]
H27UAGSXproject with 0 build resulted in error - [4]
QMPX3JDF* hydra: show queue optimization - [5]
VZYX66Q3* hydra: only show current jobs in status overview of jobset page - [6]
C5XKS77Nhydra: added missing fields to query - [7]
DTXTS7LN* Speed up findBuildDependencyInQueue by doing only one SQL query for - [8]
WOHG5MJDhydra: catalyst plain view doesn;t work with data => 0, so put some whitespace around it - [9]
BAN2M7JIhydra: show all running builds on job page, in stead of only showing the 'current' builds that are running - [10]
MMDLWWZ2automatic reload of tail log when build is running - [11]
6KJXJB7Nqualify ordery_by clauses when necessary, remove unnecessary order_by's, reported by Ludo, resulted in errors in sqlite - [12]
HRAFVVOEmake logo configurable via HYDRA_LOGO env var - [13]
NP6QUCL7* Fix indentation. - [14]
E5DMQRPORemove unnecessary whitespace in the HTML output - [15]
7DWCXNC7Use the new Nix Perl bindings - [16]
EDRUQ4UKDie TABs die - [17]
SB2V735VKeep track of the database schema version - [18]
67NFGL7Dadd links in admin page to clear queue (all non-running builds, and all non-running old (non-current) builds) - [19]
NORYRBVG50 for related builds might be a kind of low, will start with 100 - [20]
KLRDG3HRDon't show duplicate builds in "Related builds" - [21]
OZ5UBJEK - [22]
EFWN7JBV* Added a status page that shows all the currently executing build steps. - [23]
KAZWI5G4* hydra: buildpage, show changes since last build/successful build - [24]
SKQXOQ7Thydra: fixed missing argument to restartbuild function - [25]
GAIBDEZZ* Store the name of the machine that performed a build step in the - [26]
E6IC7YIK* Release sets: need to include the jobset name to disambiguate - [27]
FPK5LF53* Put the project-related actions in a separate controller. Put the - [28]
QNDXPVCI* Store the jobset's nixExprPath and nixExprInput fields in a build to - [29]
JSG5QEZJ* Only show status changes from successful to failed and failed to - [30]
5SHCWE7X* Prevent repeated evaluation of a jobset with the same inputs. This - [31]
TJPIS3UPhydra: minor improvements in hydra ui - [32]
ZI535LI6* hydra: 'new' UI for project/jobset/job/build - [33]
WYN733ST* Store build duration, handle cached builds. - [34]
SZYY2EQQ* Make the queries more readable. - [35]
VVOAXWH4fix wrong dbix:class:loader generation - [36]
MGOGOKQPadd tracker html code via HYDRA_TRACKER - [37]
M552HLIA* Support variant builds. - [38]
NREF6YOA* Don't start more builds concurrently than allowed for each system - [39]
N22GPKYT* Put info about logs / build products in the DB. - [40]
LZO3C2KI* Hack around those SQLite timeouts: just retry the transaction. - [41]
CMU3YKOU* Store the release name. - [42]
NLJJZVHO* Use ->update({...}) properly. - [43]
RBNQKATL* Adding persistant releases. A release is a named set of builds. - [44]
JLDUSNUO* Unify rendering of finished and scheduled builds. - [45]
WZ3AEJ67* hydra_update_gc_roots.pl registers build outputs that should be kept - [46]
LBNVQXUB* Build the /build stuff in a separate controller. - [47]
3ZCEPLNO - [48]
A63IHCMX* Register GC roots properly. - [49]
WRIU3S5E* UI for cloning builds (not functional yet). - [50]
6QRHXIM3* Speed up the jobset index page. Especially the query to get the - [51]
T7Z63K6Thydra: moves jobsetOverview sub - [52]
RNLGIF4Jhydra: remove debug statement - [53]
DHMTPGST* Ran update-dbix. - [54]
R3ON2RJ3hydra: missing argument - [55]
V4RNHJNR* Add a link to each project's homepage. Suggested by karltk. - [56]
R5D7DZPE - [57]
NEWDDAOF* Allow users to change the value of a build's "keep" flag, which - [58]
4D4U5IPY* Allow jobsets to be disabled. - [59]
VCOSLZRP - [60]
OV7F5M3EMerge branch 'queue-17' - [61]
SMCOU72Fhydra: add some admin for adding/enabling/etc build machines - [62]
TULPZ62Y* Perform builds in parallel. - [63]
TFVGX4JSAdd an index to speed up the /project/<name> pages - [64]
D3DIBMOK* For products that are directories (like manuals), allow a default - [65]
A5V7HLIQ* Shut up DBIx::Class. - [66]
OSVLMLCQhydra: factored out build restart and - [67]
RU7AQO7U* Role-based access control. Only admins can create projects. Only - [68]
67P45PY4 - [69]
SLWFKMU5extra indexes - [70]
A52HEFHQ* Allow builds to be restarted (if they failed with a transient error, - [71]
2PEN43XFHydra/40: Last 5 builds on job page incorrect - [72]
Y4B2MURV - [73]
WM5WAST3* Monitor for dead builds all the time. - [74]
Z4KRJX4Q* In the last succeeded / job status queries, use the Builds.isCurrent - [75]
IK53RV4V - [76]
T7CCJQOF* Revert for now due to Postgres breakage. - [77]
PTH265IX* Fix the queue page. - [78]
FD76WVTQmissing file - [79]
X27GNHDV* Basic job info in the database. - [80]
BD3GRK4B* Get rid of "positive failures" and separate log phases. - [81]
PKPWUHUX* Idem. - [82]
JJT5QG3Kremove revision from cached cvs inputs, and added missing files - [83]
SJLEZFC4check getHydraPath in stead of Envvar HYDRA_DBI directly - [84]
EYNG4EL4* Regenerate the bindings from a clean sqlite database. - [85]
4X6NS66Q* Keep the most recent builds for each job. - [86]
ZILILXXK* Allow scheduled builds to be cancelled. They're not removed from - [87]
J5UVLXOK* Start of a basic Catalyst web interface. - [88]
LCKWLQW3* In Sqlite "release" is now a keyword, so use "release_" instead. - [89]
RAKTHYAI* In the job status and error pages, show when the status of a job - [90]
3HCBU2FA - [91]
PHX2HIVG* Store info about the build inputs in the build record. - [92]
2YXO5ZGQHydra/28: Rename "scheduler" to "evaluator" - [93]
2PWOXJTX - [94]
NZI7E2E3* hydra: handle case where logfile is empty - [95]
DSM3TTSOHydra/31: "Duration" field broken in cached builds that are not in DB anymore - [96]
AHTEIK7G* Added a maintainers field to the Builds table. - [97]
CLJQCY2X* Store info about all the build actions and allow them to be - [98]
VJHIHMEH* Store the meta.longDescription and meta.license attributes in the - [99]
TQKGQ5R3 - [100]
DQD7JMSU* Fix the terminology. - [101]
JM3DPYOMgenerated schema with new dbix class schema loader, grrrrrr - [102]
ZTQEU5QSHydra: Add support for maxSilent meta attribute (also already added timeout, but not implemented the actual timeout for the build yet) - [103]
SAIUFDP3hydra: make sure viewing logs works when logs are bz2'd - [104]
7YBYT2LQ - [105]
S5PV6IIM* Represent jobs explicitly in the DB. - [106]
A22P7HCOhydra: at evaluation, check if path is already built, and mark as built in stead of adding to the queue. - [107]
FN6V3C7Malways show latest 10 builds on job page - [108]
BHZXGT2H* Channels: provide an index page that lists all the packages in the - [109]
3BKF6P72* Use Nix's negative caching. - [110]
NABL63FI* hydra: project members can do stuff that the owner can do - [111]
2T42QGZD* Register builds as GC roots so they don't get deleted. - [112]
HSVVEKTY* Start of a JSON API to get information about a specific build. - [113]
AFTXA575* $HYDRA_DATA environment variable. - [114]
3E6IP3R3* Add the name of the jobset to ReleaseSetJobs, otherwise we can't - [115]
S66BOMVU* Added authentication. - [116]
TWVSALRL* Allow the maximum number of concurrent builds per platform to be - [117]
G5A7TZVI* Don't discard old build steps when restarting a build. - [118]
6JR2WT6D* hydra: show queue optimization - [119]
ZWCTAZGLadded newsitems, added some admin options to clear various caches. - [120]
D7TT2BNK - [121]
37R34XJO* Negative caching: don't perform a build if a dependency already - [122]
BKOIYITRadded some json responses - [123]
DVNWJXWW* Generic declaration of build products. - [124]
KXGOUX7P* Creating releases. - [125]
GNIEG2GC* Disambiguate jobs by jobset name. I.e. jobs with the same name in - [126]
6BLUKEQ2* Caching of "path" inputs, and fake a revision number for those. - [127]
BEKA3TMMHydra/25: At job pages, show the hash of the output - [128]
777XFGVYHydra/22: on job page, 'finished builds' shows nothing for old (non-current) jobs - [129]
SHYRGAWZhydra: when no external url is given for diff's of git/hg input, revert to a diff done on a local available clone - [130]
YAPITGB3* Boolean inputs. - [131]
ZVTSOVHN* Support Subversion checkouts. - [132]
D6YQQQCN* Don't ignore SIGCHLD after all, Perl doesn't like it. Just do - [133]
B72GLND4 - [134]
ECBA3GQO* Make the schema class names match the case of the SQL table names. - [135]
MRVTLC76 - [136]
TLZ2SPBR - [137]
3SQCOHZN* minor performance tweaks - [138]
2WRTOU2ZCleanup - [139]
J7EE2XZAFix a huge performance regression in the jobstatus page - [140]
E2TOU3L6* More indices. - [141]
US27ZTX5* HydraFrontend -> Hydra. - [142]
BVOPAMLS - [143]
ZEHSSVFG - [144]
L2E6EVE2* Merged the Build and Job tables. - [145]
OD5FSS5A* Quick hack to allow viewing of dependency graphs (via nix-store -q - [146]
SHBLLAVH* More global substitution. - [147]
H7CNGK4O* Log evaluation errors etc. in the DB. - [148]
5O6E5SU5hydra: store logfile/output path/closure size - [149]
T6KISLR6Fix indentation - [150]
ODNCGFQ5* Improved the navigation bar: don't include all projects (since that - [151]
QZLMDKMU* Queue runner: don't start scheduled builds builds if they belong to - [152]
FM4O2L4Mhydra: if evaluator sees cached build, also add the buildproducts - [153]
UXHP37RFset threshold to show status on jobset page to a more usable size - [154]
YTZOC7C5* Editing of jobset inputs. - [155]
6FRLEP4Pfirst try for timeline of last 24 hours in hydra - [156]
6F4UNDTC* Provide access to the raw, non-pretty-printed logfiles. - [157]
P5X4P6VK* Renaming "release sets" to "views" (not finished yet). Having - [158]
RH37XKJ2 - [159]
GWCV3TQV* BuildInputs table: link to dependencies, include store paths. - [160]
QQ4STW3Smissing file - [161]
ID277UG3 - [162]
D5QIOJGP* Move everything up one directory. - [163]
NVEFBXAMhydra: order machines by enabled/disabled, add green and red color for enabled/disabled - [164]
3XTHEUMP* Implemented the clone feature. - [165]
JTRG7RDQadd support for git as jobinput - [166]
MI4IMCD3 - [167]
HB3OHPJLhydra: in case of cached build, add link to build that built the storepath - [168]
WHAFVCEI - [169]
KOTB7BKV - [170]
MPVX6MKX* hydra: on build page, show tail of log on first tab when buildstatus == 1 (this specific build failed) - [171]
ELABMHJI* hydra: layout changes - [172]
RFE6T5LG* Store jobset evaluations in the database explicitly. This includes - [173]
UMFB2767Hydra/64: Leaving number of builds empty gives DBIx error - [174]
S6OISBQ3* Mark the "current" builds in a jobset, i.e. those corresponding to - [175]
FHF6IZJQ* Basic release management: releases are now dynamically computed as - [176]
KN3VYE5P* Cleaned up the foreign key constraints. - [177]
K42RSSSI - [*]
DEMSSSB2* Controller for jobs which inherits all actions in ListBuilds. So - [*]
3HZY24CX* Make jobsets viewable under - [*]
OOQ2D3KC* Refactoring: move fetchInput out of hydra_scheduler into a separate - [*]
2GK5DOU7* Downloading closures.
Change contents
- replacement in src/lib/Hydra/Controller/API.pm at line 139
my @builds = $c->model('DB::Builds')->search({finished => 0}, {rows => $nr, join => ['schedulingInfo'] , order_by => ["busy DESC", "priority DESC", "timestamp"], '+select' => ['schedulingInfo.priority', 'schedulingInfo.busy'], '+as' => ['priority', 'busy'] });my @builds = $c->model('DB::Builds')->search({finished => 0}, {rows => $nr, order_by => ["busy DESC", "priority DESC", "timestamp"]}); - replacement in src/lib/Hydra/Controller/API.pm at line 141
my @list ;foreach my $b (@builds) {push @list, buildToHash($b) ;}my @list;push @list, buildToHash($_) foreach @builds; - replacement in src/lib/Hydra/Controller/API.pm at line 152
my $nrQueuedBuilds = $c->model('DB::BuildSchedulingInfo')->count();my $nrQueuedBuilds = $c->model('DB::Builds')->search({finished => 0})->count(); - replacement in src/lib/Hydra/Controller/API.pm at line 154
data => " $nrQueuedBuilds"data => "$nrQueuedBuilds" - replacement in src/lib/Hydra/Controller/API.pm at line 161
my $nrRunningBuilds = $c->model('DB::BuildSchedulingInfo')->search({ busy => 1 }, {})->count();$c->stash->{'plain'} = {data => " $nrRunningBuilds"my $nrRunningBuilds = $c->model('DB::Builds')->search({finished => 0, busy => 1 })->count();$c->stash->{'plain'} = {data => "$nrRunningBuilds" - replacement in src/lib/Hydra/Controller/Admin.pm at line 60
{ 'me.busy' => 1, 'schedulingInfo.busy' => 1 },{ join => [ 'schedulingInfo', 'build' ], order_by => [ 'machine' ]{ finished => 0, 'me.busy' => 1, 'build.busy' => 1, },{ join => [ 'build' ], order_by => [ 'machine', 'stepnr' ] - replacement in src/lib/Hydra/Controller/Admin.pm at line 299
$c->model('DB::Builds')->search({iscurrent => 0, busy => 0}, { join => 'schedulingInfo' })->delete_all;# !!! Mark the builds as cancelled instead.$c->model('DB::Builds')->search({finished => 0, iscurrent => 0, busy => 0})->delete_all; - replacement in src/lib/Hydra/Controller/Admin.pm at line 306
$c->model('DB::Builds')->search({busy => 0}, { join => 'schedulingInfo' })->delete_all;# !!! Mark the builds as cancelled instead.$c->model('DB::Builds')->search({finished => 0, busy => 0})->delete_all; - replacement in src/lib/Hydra/Controller/Build.pm at line 44
my $pathHash = $c->stash->{available} ? queryPathHash($build->outpath) : "Not available";$c->stash->{pathHash} = $pathHash;$c->stash->{pathHash} = $c->stash->{available} ? queryPathHash($build->outpath) : undef; - replacement in src/lib/Hydra/Controller/Build.pm at line 46
if (!$build->finished && $build->schedulingInfo->busy) {my $logfile = $build->schedulingInfo->logfile;if (!$build->finished && $build->busy) {my $logfile = $build->logfile; - replacement in src/lib/Hydra/Controller/Build.pm at line 83[21.250]→[21.0:157](∅→∅),[21.157]→[20.0:98](∅→∅),[20.98]→[21.240:249](∅→∅),[21.240]→[21.240:249](∅→∅),[21.249]→[19.0:28](∅→∅),[19.28]→[21.276:330](∅→∅),[21.276]→[21.276:330](∅→∅)
my $r = joinWithResultInfo( $c, $c->model('DB::Builds'))->search({ eval => { -in => $build->jobsetevalmembers->get_column('eval')->as_query } }, { join => 'jobsetevalmembers', order_by => [ 'project', 'jobset', 'job'], distinct => 1 });if ($r->count <= 100) {$c->stash->{relatedbuilds} = [$r->all];}#my $r = joinWithResultInfo( $c, $c->model('DB::Builds'))->search(# { eval => { -in => $build->jobsetevalmembers->all->get_column('eval')->as_query } }# , { join => 'jobsetevalmembers', order_by => [ 'project', 'jobset', 'job'], distinct => 1 }# );#if ($r->count <= 100) {# $c->stash->{relatedbuilds} = [$r->all];#} - replacement in src/lib/Hydra/Controller/Build.pm at line 143
$c->stash->{reload} = defined $c->stash->{build}->schedulingInfo && $c->stash->{build}->schedulingInfo->busy;$c->stash->{reload} = !$c->stash->{build}->finished && $c->stash->{build}->busy; - replacement in src/lib/Hydra/Controller/Build.pm at line 408
if $build->finished || $build->schedulingInfo->busy;if $build->finished || $build->busy; - replacement in src/lib/Hydra/Controller/Build.pm at line 414
$build->update({finished => 1, timestamp => time});$build->update({finished => 1, busy => 0, timestamp => time}); - edit in src/lib/Hydra/Controller/Build.pm at line 421
$build->schedulingInfo->delete; - replacement in src/lib/Hydra/Controller/Job.pm at line 39
$c->stash->{runningBuilds} = [$c->stash->{job}->builds->search({busy => 1}, { join => ['schedulingInfo', 'project'] , order_by => ["priority DESC", "timestamp"], '+select' => ['project.enabled', 'schedulingInfo.priority', 'schedulingInfo.disabled', 'schedulingInfo.busy'], '+as' => ['enabled', 'priority', 'disabled', 'busy'] })];$c->stash->{runningBuilds} = [$c->stash->{job}->builds->search({ busy => 1 },{ join => ['project'], order_by => ["priority DESC", "timestamp"], '+select' => ['project.enabled'], '+as' => ['enabled']}) ]; - replacement in src/lib/Hydra/Controller/Jobset.pm at line 68
push(@select, "(SELECT buildstatus FROM BuildResultInfo bri NATURAL JOIN Builds b WHERE b.id = (SELECT MAX(id) FROM Builds t WHERE t.project = me.project AND t.jobset = me.jobset AND t.job = me.job AND t.system = '$system' AND t.iscurrent = 1 ))");push(@select, "(select buildstatus from BuildResultInfo bri join Builds b using (id) where b.id = (select max(id) from Builds t where t.project = me.project and t.jobset = me.jobset and t.job = me.job and t.system = '$system' and t.iscurrent = 1 ))"); - replacement in src/lib/Hydra/Controller/Jobset.pm at line 70
push(@select, "(SELECT b.id FROM BuildResultInfo bri NATURAL JOIN Builds b WHERE b.id = (SELECT MAX(id) FROM Builds t WHERE t.project = me.project AND t.jobset = me.jobset AND t.job = me.job AND t.system = '$system' AND t.iscurrent = 1 ))");push(@as, $system."-build");push(@select, "(select b.id from BuildResultInfo bri join Builds b using (id) where b.id = (select max(id) from Builds t where t.project = me.project and t.jobset = me.jobset and t.job = me.job and t.system = '$system' and t.iscurrent = 1 ))");push(@as, "$system-build"); - replacement in src/lib/Hydra/Controller/Root.pm at line 25
$c->stash->{nrRunningBuilds} = $c->model('DB::BuildSchedulingInfo')->search({ busy => 1 }, {})->count();$c->stash->{nrQueuedBuilds} = $c->model('DB::BuildSchedulingInfo')->count();$c->stash->{nrRunningBuilds} = $c->model('DB::Builds')->search({ finished => 0, busy => 1 }, {})->count();$c->stash->{nrQueuedBuilds} = $c->model('DB::Builds')->search({ finished => 0 })->count(); - replacement in src/lib/Hydra/Controller/Root.pm at line 77
{finished => 0}, {join => ['schedulingInfo', 'project'] , order_by => ["priority DESC", "timestamp"], '+select' => ['project.enabled', 'schedulingInfo.priority', 'schedulingInfo.disabled', 'schedulingInfo.busy'], '+as' => ['enabled', 'priority', 'disabled', 'busy'] })];{finished => 0}, {join => ['project'] , order_by => ["priority DESC", "timestamp"], '+select' => ['project.enabled'], '+as' => ['enabled'] })]; - replacement in src/lib/Hydra/Controller/Root.pm at line 102
{ 'me.busy' => 1, 'schedulingInfo.busy' => 1 },{ join => [ 'schedulingInfo', 'build' ]{ 'me.busy' => 1, 'build.busy' => 1 },{ join => [ 'build' ] - edit in src/lib/Hydra/Helper/AddBuilds.pm at line 854
- replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 858
$build->update({ finished => 1 });$build->update({ finished => 1 }); - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 871
$build->create_related('buildschedulinginfo',{ priority => $priority$build->update({ priority => $priority - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 908
my $drvpath = $build->drvpath ;my $outpath = $build->outpath ;my $drvpath = $build->drvpath;my $outpath = $build->outpath; - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 913
$paths = $paths . " " . $bs->outpath;$paths = $paths . " " . $bs->outpath; - edit in src/lib/Hydra/Helper/AddBuilds.pm at line 917
$build->update({finished => 0, timestamp => time}); - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 918
$build->resultInfo->delete;$db->resultset('BuildSchedulingInfo')->create({ id => $build->id, priority => 0 # don't know the original priority anymore...$build->update({ finished => 0, timestamp => time - replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 923
});});$build->resultInfo->delete; - replacement in src/lib/Hydra/Helper/CatalystUtils.pm at line 85
$c->stash->{busyBuilds} = $builds->search({finished => 0, busy => 1},{join => 'schedulingInfo'}) || 0;$c->stash->{busyBuilds} = $builds->search({finished => 0, busy => 1}) || 0; - replacement in src/lib/Hydra/Helper/Nix.pm at line 198
[ "(SELECT COUNT(*) FROM Builds AS a NATURAL JOIN BuildSchedulingInfo WHERE me.project = a.project AND me.name = a.jobset AND a.isCurrent = 1)", "(SELECT COUNT(*) FROM Builds AS a NATURAL JOIN BuildResultInfo WHERE me.project = a.project AND me.name = a.jobset AND buildstatus <> 0 AND a.isCurrent = 1)", "(SELECT COUNT(*) FROM Builds AS a NATURAL JOIN BuildResultInfo WHERE me.project = a.project AND me.name = a.jobset AND buildstatus = 0 AND a.isCurrent = 1)", "(SELECT COUNT(*) FROM Builds AS a WHERE me.project = a.project AND me.name = a.jobset AND a.isCurrent = 1)"[ "(select count(*) from Builds as a where a.finished = 0 and me.project = a.project and me.name = a.jobset and a.isCurrent = 1)", "(select count(*) from Builds as a join BuildResultInfo r using (id) where me.project = a.project and me.name = a.jobset and buildstatus <> 0 and a.isCurrent = 1)", "(select count(*) from Builds as a join BuildResultInfo r using (id) where me.project = a.project and me.name = a.jobset and buildstatus = 0 and a.isCurrent = 1)", "(select count(*) from Builds as a where me.project = a.project and me.name = a.jobset and a.isCurrent = 1)" - replacement in src/lib/Hydra/Helper/Nix.pm at line 203
, "+as" => ["nrscheduled", "nrfailed", "nrsucceeded", "nrtotal"]});, "+as" => ["nrscheduled", "nrfailed", "nrsucceeded", "nrtotal"]}); - file deletion: Buildschedulinginfo.pm Buildschedulinginfo.pm BuildSchedulingInfo.pm BuildSchedulingInfo.pm Buildschedulinginfo.pm[21.207]→[21.379:425](∅→∅),[21.425]→[21.3773:3773](∅→∅),[21.294]→[21.466:512](∅→∅),[21.512]→[21.3773:3773](∅→∅),[21.477]→[21.616:662](∅→∅),[21.662]→[21.3773:3773](∅→∅),[21.207]→[21.757:803](∅→∅),[21.803]→[21.3773:3773](∅→∅),[21.3332]→[21.4711:4757](∅→∅),[21.4757]→[21.3773:3773](∅→∅)
use utf8;package Hydra::Schema::BuildSchedulingInfo;# Created by DBIx::Class::Schema::Loader# DO NOT MODIFY THE FIRST PART OF THIS FILE=head1 NAMEHydra::Schema::BuildSchedulingInfo=cutuse strict;use warnings;use base 'DBIx::Class::Core';=cut__PACKAGE__->table("BuildSchedulingInfo");=head1 ACCESSORS=head2 idis_foreign_key: 1is_nullable: 0=head2 prioritydefault_value: 0is_nullable: 0=head2 busydefault_value: 0is_nullable: 0=head2 lockeris_nullable: 0=head2 logfileis_nullable: 1=head2 disableddefault_value: 0is_nullable: 0=head2 starttimeis_nullable: 1=cutdata_type: 'integer'data_type: 'integer'data_type: 'text'data_type: 'text'default_value: (empty string)data_type: 'integer'data_type: 'integer'data_type: 'integer'is_auto_increment: 1__PACKAGE__->add_columns("id",{},"priority","busy","locker","logfile","disabled","starttime",);=head1 PRIMARY KEY=over 4=item * L</id>=back=cut__PACKAGE__->set_primary_key("id");=head1 RELATIONS=head2 idType: belongs_toRelated object: L<Hydra::Schema::Builds>=cut__PACKAGE__->belongs_to("id", "Hydra::Schema::Builds", { id => "id" }, {});# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Uz7y9Ly+ADRrtrPfEk9lGA# You can replace this text with custom content, and it will be preserved on regeneration1;{ data_type => "integer", is_nullable => 1 },{ data_type => "integer", default_value => 0, is_nullable => 0 },{ data_type => "text", is_nullable => 1 },{ data_type => "text", default_value => "", is_nullable => 0 },{ data_type => "integer", default_value => 0, is_nullable => 0 },{ data_type => "integer", default_value => 0, is_nullable => 0 },data_type => "integer",is_auto_increment => 1,is_foreign_key => 1,is_nullable => 0,=head1 TABLE: C<BuildSchedulingInfo> - replacement in src/lib/Hydra/Schema/BuildProducts.pm at line 49
data_type: 'integer'data_type: 'bigint' - replacement in src/lib/Hydra/Schema/BuildProducts.pm at line 94
{ data_type => "integer", is_nullable => 1 },{ data_type => "bigint", is_nullable => 1 }, - replacement in src/lib/Hydra/Schema/BuildProducts.pm at line 136
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:suSgQkBLXzu0yD4YicRS1A# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-02-29 00:47:18# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dzTKwZ7bby7kplnSgta3Gw - edit in src/lib/Hydra/Schema/BuildSteps.pm at line 153
__PACKAGE__->belongs_to("schedulingInfo","Hydra::Schema::BuildSchedulingInfo",{ id => "build" },); - edit in src/lib/Hydra/Schema/Builds.pm at line 129
data_type: 'text'is_nullable: 1=head2 prioritydata_type: 'integer'default_value: 0is_nullable: 0=head2 busydata_type: 'integer'default_value: 0is_nullable: 0=head2 lockerdata_type: 'text'is_nullable: 1=head2 logfile - edit in src/lib/Hydra/Schema/Builds.pm at line 154
=head2 disabled - edit in src/lib/Hydra/Schema/Builds.pm at line 157
data_type: 'integer'default_value: 0is_nullable: 0=head2 starttimedata_type: 'integer'is_nullable: 1 - edit in src/lib/Hydra/Schema/Builds.pm at line 208
{ data_type => "text", is_nullable => 1 },"priority",{ data_type => "integer", default_value => 0, is_nullable => 0 },"busy",{ data_type => "integer", default_value => 0, is_nullable => 0 },"locker", - edit in src/lib/Hydra/Schema/Builds.pm at line 215
"logfile",{ data_type => "text", is_nullable => 1 },"disabled",{ data_type => "integer", default_value => 0, is_nullable => 0 },"starttime",{ data_type => "integer", is_nullable => 1 }, - edit in src/lib/Hydra/Schema/Builds.pm at line 296
=head2 buildschedulinginfo - edit in src/lib/Hydra/Schema/Builds.pm at line 297[21.9310]→[21.9310:9328](∅→∅),[21.9328]→[17.9989:10043](∅→∅),[17.10043]→[21.9378:9385](∅→∅),[21.9378]→[21.9378:9385](∅→∅),[21.9385]→[21.8856:8881](∅→∅),[21.2883]→[21.8856:8881](∅→∅),[21.8881]→[17.10044:10109](∅→∅),[21.1284]→[21.735:768](∅→∅),[21.1619]→[21.735:768](∅→∅),[17.10109]→[21.735:768](∅→∅),[21.2973]→[21.735:768](∅→∅),[21.768]→[17.10110:10116](∅→∅),[17.10116]→[21.768:771](∅→∅),[21.768]→[21.768:771](∅→∅),[21.771]→[21.9386:9387](∅→∅)
Type: might_haveRelated object: L<Hydra::Schema::BuildSchedulingInfo>=cut__PACKAGE__->might_have("buildschedulinginfo","Hydra::Schema::BuildSchedulingInfo",{ "foreign.id" => "self.id" },{},); - replacement in src/lib/Hydra/Schema/Builds.pm at line 383
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:RRtBPTdD946kA5133+c4kw# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-02-29 00:47:54# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:VnnyFTwnLncGb2Dj2/giiA - edit in src/lib/Hydra/Schema/Builds.pm at line 400[21.9268]→[21.9268:9271](∅→∅),[21.97]→[21.6336:6337](∅→∅),[21.588]→[21.6336:6337](∅→∅),[21.718]→[21.6336:6337](∅→∅),[21.1030]→[21.6336:6337](∅→∅),[21.1292]→[21.6336:6337](∅→∅),[21.1609]→[21.6336:6337](∅→∅),[21.1715]→[21.6336:6337](∅→∅),[21.2050]→[21.6336:6337](∅→∅),[21.3548]→[21.6336:6337](∅→∅),[21.9271]→[21.6336:6337](∅→∅),[21.6336]→[21.6336:6337](∅→∅),[21.6337]→[21.3549:3594](∅→∅),[21.3594]→[21.1716:1756](∅→∅),[21.1756]→[21.3642:3660](∅→∅),[21.2091]→[21.3642:3660](∅→∅),[21.3642]→[21.3642:3660](∅→∅)
);__PACKAGE__->belongs_to("schedulingInfo","Hydra::Schema::BuildSchedulingInfo",{ id => "id" }, - replacement in src/lib/Hydra/Schema/Builds.pm at line 437
natural join BuildResultInfo rjoin BuildResultInfo r using (id) - replacement in src/lib/Hydra/Schema/Builds.pm at line 440
(select max(id)from builds c natural join buildresultinfo r2(select max(c.id)from builds c join buildresultinfo r2 on c.id = r2.id - replacement in src/lib/Hydra/Schema/Builds.pm at line 459
x.nixExprPath, x.maxsilent, x.timeout,x.nixExprPath, x.maxsilent, x.timeout, x.priority, x.busy, x.locker,x.logfile, x.disabled, x.startTime, - replacement in src/lib/Hydra/Schema/Builds.pm at line 464
(select max(id) from builds b(select max(b.id) from builds b - replacement in src/lib/Hydra/Schema/Builds.pm at line 485
(select max(id) from builds b(select max(b.id) from builds b - edit in src/lib/Hydra/Schema/SchemaVersion.pm at line 29
is_auto_increment: 1 - edit in src/lib/Hydra/Schema/SchemaVersion.pm at line 30
=cut__PACKAGE__->add_columns("version",{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },);=head1 PRIMARY KEY=over 4=item * L</version>=back - replacement in src/lib/Hydra/Schema/SchemaVersion.pm at line 33
__PACKAGE__->set_primary_key("version");__PACKAGE__->add_columns("version", { data_type => "integer", is_nullable => 0 }); - replacement in src/lib/Hydra/Schema/SchemaVersion.pm at line 36
# Created by DBIx::Class::Schema::Loader v0.07014 @ 2011-12-05 14:15:43# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:F/jsSRq8pxR4mWq/N4qYGw# Created by DBIx::Class::Schema::Loader v0.07014 @ 2012-02-29 00:47:18# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:LFD28W0GvvrOOylCM98SEQ - replacement in src/root/build.tt at line 73
[% IF build.schedulingInfo.busy %][% IF build.busy %] - replacement in src/root/build.tt at line 130
[% IF !build.schedulingInfo %][% IF !build.finished %] - edit in src/root/build.tt at line 319
[% IF pathHash %] - edit in src/root/build.tt at line 326
[% END %] - replacement in src/root/build.tt at line 371
<td>[% build.schedulingInfo.priority %]</td><td>[% build.priority %]</td> - replacement in src/root/common.tt at line 96
[%- IF build.get_column('busy') %]runningBuild[% ELSIF build.get_column('disabled') == 1 || build.get_column('enabled') == 0 %]disabledBuild[% END -%][%- IF build.busy %]runningBuild[% ELSIF build.disabled == 1 || build.get_column('enabled') == 0 %]disabledBuild[% END -%] - replacement in src/root/common.tt at line 108[14.1382]→[21.139:346](∅→∅),[21.1669]→[21.139:346](∅→∅),[21.346]→[21.171:227](∅→∅),[21.1669]→[21.171:227](∅→∅)
<td>[% IF build.get_column('busy') %]<img src="/static/images/running.gif" alt="Running" />[% ELSIF build.get_column('disabled') == 1 || build.get_column('enabled') == 0 %]Disabled[% END %]</td><td>[% build.get_column('priority') %]</td><td>[% IF build.busy %]<img src="/static/images/running.gif" alt="Running" />[% ELSIF build.disabled == 1 || build.get_column('enabled') == 0 %]Disabled[% END %]</td><td>[% build.priority %]</td> - replacement in src/root/common.tt at line 206
[%- busy = busy != undef ? busy : build.schedulingInfo.busy -%][%- busy = busy != undef ? busy : build.busy -%] - replacement in src/root/common.tt at line 258
[% ELSIF build.schedulingInfo.busy %][% ELSIF build.busy %] - replacement in src/root/common.tt at line 260
since [% INCLUDE renderDateTime timestamp = build.schedulingInfo.starttime %]since [% INCLUDE renderDateTime timestamp = build.starttime %] - replacement in src/script/hydra-build at line 401
$build->update({finished => 1, timestamp => time});$build->update({finished => 1, busy => 0, locker => '', logfile => '', timestamp => time}); - edit in src/script/hydra-build at line 426
$build->schedulingInfo->delete; - replacement in src/script/hydra-build at line 454
if ($build->schedulingInfo->busy != 0 && $build->schedulingInfo->locker != getppid) {if ($build->busy != 0 && $build->locker != getppid) { - replacement in src/script/hydra-build at line 457
$build->schedulingInfo->update({busy => 1, locker => $$});$build->update({busy => 1, locker => $$}); - replacement in src/script/hydra-build at line 473
$build->schedulingInfo->update({busy => 0, locker => $$});$build->update({busy => 0, locker => $$}); - replacement in src/script/hydra-queue-runner at line 23[21.1237]→[21.77:132](∅→∅),[21.94]→[21.77:132](∅→∅),[21.132]→[21.147:216](∅→∅),[21.147]→[21.147:216](∅→∅)
my @builds = $db->resultset('Builds')->search({finished => 0, busy => 1}, {join => 'schedulingInfo'});my @builds = $db->resultset('Builds')->search({finished => 0, busy => 1}); - replacement in src/script/hydra-queue-runner at line 25
my $pid = $build->schedulingInfo->locker;my $pid = $build->locker; - replacement in src/script/hydra-queue-runner at line 34
if ($build->schedulingInfo->starttime + 60 < time) {if ($build->starttime + 60 < time) { - replacement in src/script/hydra-queue-runner at line 42
$build->schedulingInfo->busy(0);$build->schedulingInfo->locker("");$build->schedulingInfo->update;$build->busy(0);$build->locker("");$build->update; - replacement in src/script/hydra-queue-runner at line 66
{ join => ['schedulingInfo', 'project'], rows => 1 } ) ;{ join => ['project'], rows => 1 } ) ; - replacement in src/script/hydra-queue-runner at line 81
{ join => ['schedulingInfo', 'project'], select => ['system'], as => ['system'], distinct => 1 });{ join => ['project'], select => ['system'], as => ['system'], distinct => 1 }); - replacement in src/script/hydra-queue-runner at line 90
{finished => 0, busy => 1, system => $system->system},{join => 'schedulingInfo'})->count;{finished => 0, busy => 1, system => $system->system})->count; - replacement in src/script/hydra-queue-runner at line 101
{ join => ['schedulingInfo', 'project'], order_by => ["priority DESC", "timestamp"],{ join => ['project'], order_by => ["priority DESC", "timestamp"], - replacement in src/script/hydra-queue-runner at line 115
$build->schedulingInfo->busy(1);$build->schedulingInfo->locker($$);$build->schedulingInfo->logfile($logfile);$build->schedulingInfo->starttime(time);$build->schedulingInfo->update;$build->busy(1);$build->locker($$);$build->logfile($logfile);$build->starttime(time);$build->update; - replacement in src/script/hydra-queue-runner at line 131
my $logfile = $build->schedulingInfo->logfile;my $logfile = $build->logfile; - replacement in src/script/hydra-queue-runner at line 148
$build->schedulingInfo->busy(0);$build->schedulingInfo->locker($$);$build->schedulingInfo->update;$build->busy(0);$build->locker($$);$build->update; - replacement in src/script/hydra-update-gc-roots at line 115
foreach my $build ($db->resultset('Builds')->search({finished => 0}, {join => 'schedulingInfo'})) {foreach my $build ($db->resultset('Builds')->search({finished => 0})) { - edit in src/sql/hydra.sql at line 117[21.7518]→[21.1850:1921](∅→∅),[21.1921]→[21.8670:8869](∅→∅),[21.8670]→[21.8670:8869](∅→∅),[21.8869]→[21.4598:4669](∅→∅)
-- This table contains all wbuilds, either scheduled or finished. For-- scheduled builds, additional info (such as the priority) can be-- found in the BuildSchedulingInfo table. For finished builds,-- additional info (such as the logs, build products, etc.) can be-- found in several tables, such as BuildResultInfo and BuildProducts. - edit in src/sql/hydra.sql at line 154[21.791]→[21.9173:9178](∅→∅),[21.3623]→[21.9173:9178](∅→∅),[21.4782]→[21.9173:9178](∅→∅),[21.5905]→[21.9173:9178](∅→∅),[21.18121]→[21.9173:9178](∅→∅),[21.9173]→[21.9173:9178](∅→∅),[21.9178]→[21.7599:7859](∅→∅),[21.6824]→[21.9345:9348](∅→∅),[21.7859]→[21.9345:9348](∅→∅),[21.9345]→[21.9345:9348](∅→∅)
foreign key (project) references Projects(name) on update cascade,foreign key (project, jobset) references Jobsets(project, name) on update cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade); - replacement in src/sql/hydra.sql at line 155
-- Info for a scheduled build.create table BuildSchedulingInfo (id integer primary key not null,-- Information about scheduled builds. - replacement in src/sql/hydra.sql at line 159
locker text not null default '', -- !!! hostname/pid of the process building this job?locker text, -- !!! hostname/pid of the process building this job? - replacement in src/sql/hydra.sql at line 163
disabled integer not null default 0,disabled integer not null default 0, -- !!! boolean - replacement in src/sql/hydra.sql at line 166[21.2407]→[21.9768:9773](∅→∅),[21.2570]→[21.9768:9773](∅→∅),[21.9768]→[21.9768:9773](∅→∅),[21.9773]→[21.7860:7923](∅→∅)
foreign key (id) references Builds(id) on delete cascadeforeign key (project) references Projects(name) on update cascade,foreign key (project, jobset) references Jobsets(project, name) on update cascade,foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade - edit in src/sql/hydra.sql at line 514
create index IndexBuildSchedulingInfoOnBuild on BuildSchedulingInfo(id); -- idem - file addition: upgrade-2.sql[21.3004]
alter table Buildsadd column priority integer not null default 0,add column busy integer not null default 0,add column locker text,add column logfile text,add column disabled integer not null default 0,add column startTime integer;--alter table Builds-- add column isCachedBuild integer,-- add column buildStatus integer,-- add column errorMsg text;update Builds b setpriority = (select priority from BuildSchedulingInfo s where s.id = b.id),busy = (select busy from BuildSchedulingInfo s where s.id = b.id),disabled = (select disabled from BuildSchedulingInfo s where s.id = b.id),locker = (select locker from BuildSchedulingInfo s where s.id = b.id),logfile = (select logfile from BuildSchedulingInfo s where s.id = b.id)where exists (select 1 from BuildSchedulingInfo s where s.id = b.id);update Builds b setstartTime = ((select startTime from BuildSchedulingInfo s where s.id = b.id) union (select startTime from BuildResultInfo r where r.id = b.id));-- isCachedBuild = (select isCachedBuild from BuildResultInfo r where r.id = b.id),-- buildStatus = (select buildStatus from BuildResultInfo r where r.id = b.id),-- errorMsg = (select errorMsg from BuildResultInfo r where r.id = b.id);