Open the DB using Hydra::Model::DB->new

[?]
Mar 13, 2012, 11:10 AM
TJK27WSBFOM6LKVCSA7LTTCWUGB4O2AL22PNIDQXS4BFOFCISH2QC

Dependencies

  • [2] VPEQI5QS * Don't disable fsync in production.
  • [3] JH4RYUNG check if HYDRA_DBI is defined in stead of empty string comparison
  • [4] AMFMXR52 Provide a command ‘hydra-init’ to initialise/upgrade the database
  • [5] HPEG2RHV Merge the BuildResultInfo table into the Builds table
  • [6] 3E6IP3R3 * Add the name of the jobset to ReleaseSetJobs, otherwise we can't
  • [7] W3HI52QV use NIX_*_DIR env vars when defined
  • [8] 6KJXJB7N qualify ordery_by clauses when necessary, remove unnecessary order_by's, reported by Ludo, resulted in errors in sqlite
  • [9] 2GK5DOU7 * Downloading closures.
  • [10] 3BKF6P72 * Use Nix's negative caching.
  • [11] P5X4P6VK * Renaming "release sets" to "views" (not finished yet). Having
  • [12] 2QA4Y4G3 * hydra: added index, actual build time (buildstep with same outpath, so without deps) of the build
  • [13] 37R34XJO * Negative caching: don't perform a build if a dependency already
  • [14] JTRG7RDQ add support for git as jobinput
  • [15] H7CNGK4O * Log evaluation errors etc. in the DB.
  • [16] IK53RV4V
  • [17] RFE6T5LG * Store jobset evaluations in the database explicitly. This includes
  • [18] TLZ2SPBR
  • [19] TWVSALRL * Allow the maximum number of concurrent builds per platform to be
  • [20] C7CXMZ66 hydra: do not perform git clone every time. in stead work on local clone and pull
  • [21] 6BLUKEQ2 * Caching of "path" inputs, and fake a revision number for those.
  • [22] GNIEG2GC * Disambiguate jobs by jobset name. I.e. jobs with the same name in
  • [23] VVOAXWH4 fix wrong dbix:class:loader generation
  • [24] 5SHCWE7X * Prevent repeated evaluation of a jobset with the same inputs. This
  • [25] QNDXPVCI * Store the jobset's nixExprPath and nixExprInput fields in a build to
  • [26] RBGYFVWX use HYDRA_DATA/hydra.conf as default location for hydra.conf
  • [27] QBQSQOSY hydra: moved getbuildlog
  • [28] SB2V735V Keep track of the database schema version
  • [29] 67P45PY4
  • [30] EJFVQ33S * In the job status page and the channels, pick the build with the
  • [31] 4X6NS66Q * Keep the most recent builds for each job.
  • [32] X5UVREJY * PostgreSQL compatibility.
  • [33] IJPTEKRF
  • [34] S5PV6IIM * Represent jobs explicitly in the DB.
  • [35] YFPZ46YK * hydra: added variant of build input type, 'build output (same system)' to allow better continous integration in one jobset for multiple system. it makes sure that the system of the build that is passed as input for a job has the same system as the job.
  • [36] M552HLIA * Support variant builds.
  • [37] 3ZCEPLNO
  • [38] KN3VYE5P * Cleaned up the foreign key constraints.
  • [39] LCKWLQW3 * In Sqlite "release" is now a keyword, so use "release_" instead.
  • [40] AFTXA575 * $HYDRA_DATA environment variable.
  • [41] D3DIBMOK * For products that are directories (like manuals), allow a default
  • [42] JK2QWPH6
  • [43] L2E6EVE2 * Merged the Build and Job tables.
  • [44] S66BOMVU * Added authentication.
  • [45] SJN2QPWH * Big speed-up of the job status page and the channel generation (such
  • [46] ONAQU4BR hydra: handle case where build to keep set to 0
  • [47] RWIBJ5L4 * Autoflush stdout.
  • [48] YTZOC7C5 * Editing of jobset inputs.
  • [49] ECBA3GQO * Make the schema class names match the case of the SQL table names.
  • [50] N22GPKYT * Put info about logs / build products in the DB.
  • [51] SJLEZFC4 check getHydraPath in stead of Envvar HYDRA_DBI directly
  • [52] A63IHCMX * Register GC roots properly.
  • [53] KOTB7BKV
  • [54] BD3GRK4B * Get rid of "positive failures" and separate log phases.
  • [55] TQKGQ5R3
  • [56] V4RNHJNR * Add a link to each project's homepage. Suggested by karltk.
  • [57] 7PYQLDQL Added sequences for auto increment primary key columns (for PostgreSQL)
  • [58] 7ZSVXUGF sequence fix for postgresql
  • [59] JM3DPYOM generated schema with new dbix class schema loader, grrrrrr
  • [60] LZO3C2KI * Hack around those SQLite timeouts: just retry the transaction.
  • [61] SZYY2EQQ * Make the queries more readable.
  • [62] KPZNJ33U * In views, support selecting a job that doesn't depend on the
  • [63] 7YBYT2LQ
  • [64] SHBLLAVH * More global substitution.
  • [65] GZAXDYBQ * Script for initialising the database.
  • [66] OV7F5M3E Merge branch 'queue-17'
  • [67] J5UVLXOK * Start of a basic Catalyst web interface.
  • [68] ZEHSSVFG
  • [69] IN272KZW * Automatically keep all builds in the latest successful release in
  • [70] DVNWJXWW * Generic declaration of build products.
  • [71] BHZXGT2H * Channels: provide an index page that lists all the packages in the
  • [72] BDSD2JLV * Speed up manifest generation.
  • [73] PHX2HIVG * Store info about the build inputs in the build record.
  • [74] OOQ2D3KC * Refactoring: move fetchInput out of hydra_scheduler into a separate
  • [75] VJHIHMEH * Store the meta.longDescription and meta.license attributes in the
  • [76] B72GLND4
  • [77] RAKTHYAI * In the job status and error pages, show when the status of a job
  • [78] R5D7DZPE
  • [79] IDFJXJHW revert commit 26130, use hardcoded default value for HYDRA_DATA (/var/lib/hydra)
  • [80] K4C6DNSM changed queries for compatibility with postgresql
  • [81] CMU3YKOU * Store the release name.
  • [82] YJKSGJPC Set a default value for `getHydraPath'.
  • [83] YAPITGB3 * Boolean inputs.
  • [84] 3HCBU2FA
  • [85] VKOHKP4M Hydra now uses an optional HYDRA_DBI environment variable which holds the DBI url. If this variable is not set, sqlite is used like before.
  • [86] BVOPAMLS
  • [87] 4D4U5IPY * Allow jobsets to be disabled.
  • [88] 6KCP6ODP * Get the URI for use in notification mails from the Hydra config
  • [89] ZVTSOVHN * Support Subversion checkouts.
  • [90] AHTEIK7G * Added a maintainers field to the Builds table.
  • [91] RBNQKATL * Adding persistant releases. A release is a named set of builds.
  • [92] WZ3AEJ67 * hydra_update_gc_roots.pl registers build outputs that should be kept
  • [93] ZTQEU5QS Hydra: Add support for maxSilent meta attribute (also already added timeout, but not implemented the actual timeout for the build yet)
  • [94] ZWCTAZGL added newsitems, added some admin options to clear various caches.
  • [95] 7DWCXNC7 Use the new Nix Perl bindings
  • [96] GWCV3TQV * BuildInputs table: link to dependencies, include store paths.
  • [97] RU7AQO7U * Role-based access control. Only admins can create projects. Only
  • [98] X27GNHDV * Basic job info in the database.
  • [99] FHF6IZJQ * Basic release management: releases are now dynamically computed as
  • [100] S6OISBQ3 * Mark the "current" builds in a jobset, i.e. those corresponding to
  • [101] ZDENAYQI * email notification of evaluation errors to project owner (if desired)
  • [102] ZDF42B24 revert change to dbix::class generated code
  • [103] MOX7XJ2E Merge the BuildSchedulingInfo table into the Builds table
  • [104] UMBR3VG3
  • [105] 6US6LEC7 * Add a NarSize field to Hydra manifests. This allows nix-env
  • [106] 2T42QGZD * Register builds as GC roots so they don't get deleted.
  • [107] TULPZ62Y * Perform builds in parallel.
  • [108] EYNG4EL4 * Regenerate the bindings from a clean sqlite database.
  • [109] CLJQCY2X * Store info about all the build actions and allow them to be
  • [110] BMSQD2ZH Indentation
  • [111] ZI535LI6 * hydra: 'new' UI for project/jobset/job/build
  • [*] T7Z63K6T hydra: moves jobsetOverview sub
  • [*] IW2LHCLL fixed email bug

Change contents

  • edit in src/lib/Hydra/Helper/AddBuilds.pm at line 9
    [6.143]
    [6.2735]
    use Hydra::Model::DB;
  • replacement in src/lib/Hydra/Helper/AddBuilds.pm at line 26
    [6.46][6.46:81]()
    return getHydraPath . "/scm" ;
    [6.46]
    [6.111]
    return Hydra::Model::DB::getHydraPath . "/scm" ;
  • edit in src/lib/Hydra/Helper/Nix.pm at line 8
    [113.34]
    [6.127]
    use Hydra::Model::DB;
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 12
    [6.619][4.2431:2508]()
    getHydraPath getHydraHome getHydraDBPath openHydraDB getHydraConf txn_do
    [6.619]
    [6.665]
    getHydraHome getHydraConf txn_do
  • edit in src/lib/Hydra/Helper/Nix.pm at line 19
    [6.302][6.302:321](),[6.321][6.30:84](),[6.84][6.65:141](),[6.129][6.503:520](),[6.141][6.503:520](),[6.153][6.503:520](),[6.503][6.503:520](),[6.520][6.142:145](),[6.145][4.2509:2510]()
    sub getHydraPath {
    my $dir = $ENV{"HYDRA_DATA"} || "/var/lib/hydra";
    die "The HYDRA_DATA directory ($dir) does not exist!\n" unless -d $dir;
    return $dir;
    }
  • replacement in src/lib/Hydra/Helper/Nix.pm at line 26
    [6.164][6.560:631]()
    my $conf = $ENV{"HYDRA_CONFIG"} || (getHydraPath . "/hydra.conf");
    [6.164]
    [6.631]
    my $conf = $ENV{"HYDRA_CONFIG"} || (Hydra::Model::DB::getHydraPath . "/hydra.conf");
  • edit in src/lib/Hydra/Helper/Nix.pm at line 32
    [6.524][6.524:545](),[6.545][6.0:32](),[6.32][3.0:25](),[3.25][6.53:252](),[6.53][6.53:252](),[6.252][6.673:677](),[6.690][6.673:677](),[6.673][6.673:677](),[6.677][6.691:774](),[6.774][2.0:98](),[2.98][6.830:846](),[6.830][6.830:846](),[6.846][6.49:53]()
    sub getHydraDBPath {
    my $db = $ENV{"HYDRA_DBI"};
    if ( defined $db ) {
    return $db ;
    }
    else {
    my $path = getHydraPath . '/hydra.sqlite';
    die "The Hydra database ($path) not exist!\n" unless -f $path;
    return "dbi:SQLite:$path";
    }
    }
    sub openHydraDB {
    my $db = Hydra::Schema->connect(getHydraDBPath, "", "", {});
    $db->storage->dbh->do("PRAGMA synchronous = OFF;")
    if defined $ENV{'HYDRA_NO_FSYNC'};
    return $db;
    }
  • replacement in src/lib/Hydra/Model/DB.pm at line 5
    [6.2784][6.854:878]()
    use Hydra::Helper::Nix;
    [6.2784]
    [6.2784]
    sub getHydraPath {
    my $dir = $ENV{"HYDRA_DATA"} || "/var/lib/hydra";
    die "The HYDRA_DATA directory ($dir) does not exist!\n" unless -d $dir;
    return $dir;
    }
    sub getHydraDBPath {
    my $db = $ENV{"HYDRA_DBI"};
    return $db if defined $db;
    my $path = getHydraPath . '/hydra.sqlite';
    die "The Hydra database ($path) not exist!\n" unless -f $path;
    return "dbi:SQLite:$path";
    }
  • edit in src/lib/Hydra/Schema/BuildInputs.pm at line 158
    [6.83][6.781:782](),[6.206][6.781:782](),[6.266][6.781:782](),[6.291][6.781:782](),[6.317][6.781:782](),[6.498][6.781:782](),[6.1112][6.781:782](),[6.1467][6.781:782](),[6.2318][6.781:782](),[6.2938][6.781:782](),[6.6488][6.781:782](),[6.781][6.781:782](),[6.782][6.2319:2343](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.142][6.924:925](),[6.203][6.924:925](),[6.205][6.924:925](),[6.222][6.924:925](),[6.231][6.924:925](),[6.241][6.924:925](),[6.289][6.924:925](),[6.308][6.924:925](),[6.321][6.924:925](),[6.325][6.924:925](),[6.395][6.924:925](),[6.437][6.924:925](),[6.507][6.924:925](),[6.537][6.924:925](),[6.555][6.924:925](),[6.571][6.924:925](),[6.629][6.924:925](),[6.729][6.924:925](),[6.825][6.924:925](),[6.843][6.924:925](),[6.852][6.924:925](),[6.867][6.924:925](),[6.875][6.924:925](),[6.1143][6.924:925](),[6.1473][6.924:925](),[6.1540][6.924:925](),[6.1643][6.924:925](),[6.2117][6.924:925](),[6.2343][6.924:925](),[6.3193][6.924:925](),[6.924][6.924:925](),[6.925][6.0:136](),[6.97][6.925:926](),[6.136][6.925:926](),[6.1740][6.925:926](),[6.925][6.925:926](),[6.926][6.137:151]()
    use Hydra::Helper::Nix;
    sub addSequence {
    my $hydradbi = getHydraDBPath ;
    if ($hydradbi =~ m/^dbi:Pg/) {
    __PACKAGE__->sequence('builds_id_seq');
    }
    }
    addSequence ;
  • edit in src/lib/Hydra/Schema/BuildInputs.pm at line 159
    [6.152][6.1144:1234](),[6.926][6.1144:1234]()
    # You can replace this text with custom content, and it will be preserved on regeneration
  • edit in src/lib/Hydra/Schema/Builds.pm at line 434
    [6.928][6.1324:1325](),[6.5178][6.1324:1325](),[5.6862][6.1324:1325](),[6.11112][6.1324:1325](),[6.1324][6.1324:1325](),[6.1325][6.63:87](),[6.63][6.63:87]()
    use Hydra::Helper::Nix;
  • edit in src/lib/Hydra/Schema/Builds.pm at line 457
    [6.2196][6.153:171](),[6.171][6.880:1004](),[6.290][6.165:167](),[6.1004][6.165:167](),[6.165][6.165:167](),[6.167][6.2196:2197](),[6.2196][6.2196:2197]()
    sub addSequence {
    my $hydradbi = getHydraDBPath;
    if ($hydradbi =~ m/^dbi:Pg/) {
    __PACKAGE__->sequence('builds_id_seq');
    }
    }
  • edit in src/lib/Hydra/Schema/Builds.pm at line 520
    [6.292][6.292:305](),[6.305][6.3770:3771](),[6.3031][6.3770:3771](),[6.3770][6.3770:3771]()
    addSequence;
  • edit in src/lib/Hydra/Schema/JobsetEvals.pm at line 147
    [6.4616][6.1130:1131](),[6.18496][6.1130:1131](),[6.1130][6.1130:1131](),[6.1131][6.4617:4788]()
    use Hydra::Helper::Nix;
    # !!! Ugly, should be generated.
    my $hydradbi = getHydraDBPath;
    if ($hydradbi =~ m/^dbi:Pg/) {
    __PACKAGE__->sequence('jobsetevals_id_seq');
    }
  • edit in src/lib/Hydra/Schema/NewsItems.pm at line 88
    [6.23241][6.3942:4112](),[6.3942][6.3942:4112]()
    use Hydra::Helper::Nix;
    # !!! Ugly, should be generated.
    my $hydradbi = getHydraDBPath;
    if ($hydradbi =~ m/^dbi:Pg/) {
    __PACKAGE__->sequence('newsitems_id_seq');
    }
  • edit in src/script/hydra-build at line 9
    [6.1070]
    [114.0]
    use Hydra::Model::DB;
  • replacement in src/script/hydra-build at line 25
    [6.155][6.1071:1093]()
    my $db = openHydraDB;
    [6.155]
    [6.22]
    my $db = Hydra::Model::DB->new();
  • edit in src/script/hydra-evaluator at line 8
    [6.10946]
    [6.2013]
    use Hydra::Model::DB;
  • edit in src/script/hydra-evaluator at line 10
    [6.2045][6.47:48](),[6.1597][6.47:48]()
  • replacement in src/script/hydra-evaluator at line 20
    [6.915][6.1771:1793]()
    my $db = openHydraDB;
    [6.915]
    [6.382]
    my $db = Hydra::Model::DB->new();
  • edit in src/script/hydra-init at line 6
    [4.2737]
    [4.2737]
    use Hydra::Model::DB;
  • replacement in src/script/hydra-init at line 11
    [4.2804][4.2804:2826]()
    my $db = openHydraDB;
    [4.2804]
    [4.2826]
    my $db = Hydra::Model::DB->new();
  • edit in src/script/hydra-queue-runner at line 9
    [6.1139]
    [6.0]
    use Hydra::Model::DB;
  • replacement in src/script/hydra-queue-runner at line 13
    [6.7879][6.1140:1189]()
    chdir getHydraPath or die;
    my $db = openHydraDB;
    [6.7879]
    [6.265]
    chdir Hydra::Model::DB::getHydraPath or die;
    my $db = Hydra::Model::DB->new();
  • edit in src/script/hydra-update-gc-roots at line 9
    [6.607]
    [6.0]
    use Hydra::Model::DB;
  • replacement in src/script/hydra-update-gc-roots at line 12
    [6.608][6.608:630]()
    my $db = openHydraDB;
    [6.608]
    [6.741]
    my $db = Hydra::Model::DB->new();
  • replacement in src/script/hydra-update-gc-roots at line 79
    [6.112][6.112:206]()
    if ($jobset->enabled == 0 && (time() - $jobset->lastcheckedtime > (7 * 24 * 3600))) {
    [6.112]
    [6.206]
    if ($jobset->enabled == 0 && (time() - ($jobset->lastcheckedtime || 0) > (7 * 24 * 3600))) {