Permalink
Commits on Mar 12, 2012
  1. Don't use the Switch module

    It was removed in Perl 5.14.
    edolstra committed Mar 12, 2012
  2. Fix the jobset unchanged check

    When checking whether the jobset is unchanged, we need to compare with
    the previous JobsetEval regardless of whether it had new builds.
    Otherwise we'll keep adding new JobsetEval rows.
    edolstra committed Mar 12, 2012
  3. Re-enable the "Related Builds" tab

    However, there is a "limit 1" on the JobsetEval search to prevent a
    sequential scan of the Builds table.
    edolstra committed Mar 12, 2012
  4. Disable prepared statements completely

    Because of the way DBIx::Class does prepared statements, even
    innocuous queries such
    
      $c->model('DB::Builds)->search({finished => 0})
    
    can be extremely slow.  This is because DBIx::Class prepares a
    PostgreSQL statement
    
      select ... from Builds where finished = ?
    
    and since Builds is very large and there is a large fraction of rows
    with "finished = 1", the PostgreSQL query planner decides to implement
    this query with a sequential scan of the Builds table (despite the
    existence of an index on "finished"), which is extremely slow.  It
    would be nice if we could tell DBIx::Class that constants should be
    part of the prepared statement, i.e.
    
      select ... from Builds where finished = 0
    
    but AFAIK we can't.
    edolstra committed Mar 12, 2012
Commits on Mar 8, 2012
  1. Speed up channel processing

    In particular the /pkg action is now O(lg n) instead of O(n) in the
    number of packages in the channel, and listing the channel contents
    no longer requires calling isValidPath() on all packages.
    
    Derivations (and thus build time dependencies) are no longer included
    in the channel, because they're not GC roots.  Thus they could
    disappear unexpectedly.
    edolstra committed Mar 8, 2012
Commits on Mar 7, 2012
  1. Reduce I/O in build listings by only fetching required columns

    Columns such as "longDescription" can be large, so fetching them
    when they're not needed is wasteful.
    edolstra committed Mar 7, 2012
  2. hydra-build: only send email if the status differs from the previous …

    …build
    
    This isn't perfect because it doesn't handle the case where a
    previous build hasn't finished yet.  But at least it won't send mail
    for old builds that fail while a newer build has already succeeded.
    edolstra committed Mar 7, 2012
  3. Evaluator cleanups

    * Don't use isCurrent anymore; instead look up builds in the previous
      jobset evaluation.  (The isCurrent field is still maintained because
      it's still used in some other places.)
    
    * To determine whether to perform an evaluation, compare the hash of
      the current inputs with the inputs of the previous jobset
      evaluation, rather than checking if there was ever an evaluation
      with those inputs.  This way, if the inputs of an evaluation change
      back to a previous state, we get a new jobset evaluation in the
      database (and thus the latest jobset evaluation correctly represents
      the latest state of the jobset).
    
    * Improve performance by removing some unnecessary operations and
      adding an index.
    edolstra committed Mar 7, 2012
  4. Fix a race condition in hydra-update-gc-roots

    Since it read the actual roots after determining the set of desired
    roots, there was a possibility that it would delete roots added by
    hydra-evaluator or hydra-build while hydra-update-gc-roots was
    running.  This could cause a derivation to be garbage-collected before
    the build was performed, for instance.  Now the actual roots are read
    first, so any root added after that time is not deleted.
    edolstra committed Mar 7, 2012
  5. Speed up hydra-update-gc-roots

    The hydra-update-gc-roots script is taking around 95 minutes on our
    Hydra instance (though a lot of that is I/O wait).  This patch
    significantly reduces the number of database queries.  In particular,
    the N most recent successful builds for each job in a jobset are now
    determined in a single query.  Also, it removes the calls to
    readlink().
    edolstra committed Mar 7, 2012
Commits on Mar 6, 2012
Commits on Mar 5, 2012
  1. Don't use a prepared statement for the active build steps query

    Prepared statements are sometimes much slower than unprepared
    statements, because the planner doesn't have access to the query
    parameters.  This is the case for the active build steps query (in
    /status), where a prepared statement is three orders of magnitude
    slower.  So disable the use of prepared statements in this case.
    
    (Since the query parameters are constant here, it would be nicer if we
    could tell DBIx::Class to prepare a statement with those parameters
    fixed.  But I don't know an easy way to do so.)
    edolstra committed Mar 5, 2012
  2. Add hydra-init to the tarball

    edolstra committed Mar 5, 2012
  3. Merge the BuildSchedulingInfo table into the Builds table

    This simplifies the code and improves performance since it reduces
    the number of joins.
    edolstra committed Feb 29, 2012
Commits on Feb 28, 2012
  1. Provide a command ‘hydra-init’ to initialise/upgrade the database

    For schema upgrades, hydra-init executes the files
    src/sql/upgrade-<N>.sql, each of which upgrades the schema from
    version N-1 to N.  The upgrades are wrapped in a transaction.
    edolstra committed Feb 28, 2012
  2. Don't install hydra-create

    It doesn't do anything useful for users.
    edolstra committed Feb 28, 2012
  3. Whitespace

    edolstra committed Feb 28, 2012
Commits on Feb 21, 2012
  1. Indentation

    edolstra committed Feb 21, 2012
  2. Don't show duplicate builds in "Related builds"

    Since a build may be a member of multiple jobset evaluations, we need
    to do a "select distinct" here.  But maybe we should only show builds
    from a single evaluation (e.g. the most recent), since showing builds
    from several may be confusing.
    edolstra committed Feb 21, 2012
Commits on Feb 16, 2012
  1. * minor performance tweaks

     * added related builds tab which show related builds (builds that are in same evaluations), shows max 50
    rbvermaa committed Feb 16, 2012
  2. add links in admin page to clear queue (all non-running builds, and a…

    …ll non-running old (non-current) builds)
    rbvermaa committed Feb 16, 2012
  3. accidentally committed an = too little, which caused all unknown valu…

    …es to result in 'not building', which was not the intention
    rbvermaa committed Feb 16, 2012
Commits on Feb 14, 2012
Commits on Feb 7, 2012
  1. Remove redundant dot in status emails

    E.g.:
    
      This is to let you know that Hydra build 1998534 of job patchelf:trunk:deb_ubuntu1110x86_64 is 'Success'..
    edolstra committed Feb 7, 2012
Commits on Jan 31, 2012
Commits on Jan 28, 2012
  1. remove old line

    rbvermaa committed Jan 28, 2012
  2. fix; resetting password used to send email to logged in user (typical…

    …ly admin), now to the user whose password is resetted
    rbvermaa committed Jan 28, 2012