Skip to content
Snippets Groups Projects
This project is mirrored from https://git.savannah.gnu.org/git/guix/guix-cuirass.git/. Pull mirroring updated .
  1. Jan 30, 2021
    • Mathieu Othacehe's avatar
      Add machine field to Worker table. · 1271b117
      Mathieu Othacehe authored
      * src/sql/upgrade-2.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Workers): Add "machine field".
      * src/cuirass/database.scm (db-get-builds): Return "worker" field.
      (db-add-worker): Honor new "machine" field.
      (db-get-workers): Ditto.
      * src/cuirass/remote-worker.scm (remote-worker): Adapt it.
      * src/cuirass/remote.scm (<worker>)[machine]: New field.
      (worker-machine): New procedure.
      (worker->sexp, sexp->worker): Adapt accordingly.
      (generate-worker-name): Ditto.
      * tests/database.scm (%dummy-worker): Add "machine" field.
      1271b117
  2. Jan 28, 2021
    • Mathieu Othacehe's avatar
      Fix logging. · 68532aee
      Mathieu Othacehe authored
      
      * src/cuirass/remote-server.scm (remote-server): Have stdout/stderr
      line-buffered.
      * src/cuirass/remote-worker.scm (remote-worker): Ditto.
      * src/cuirass/remote.scm (publish-server): Discard publish logs.
      
      Signed-off-by: default avatarMathieu Othacehe <othacehe@gnu.org>
      68532aee
  3. Jan 21, 2021
  4. Jan 18, 2021
  5. Jan 17, 2021
    • Mathieu Othacehe's avatar
      Fix tests. · e61e7a5c
      Mathieu Othacehe authored
      * tests/database.scm (db-init): Force database creation.
      * tests/http.scm (db-init): Ditto.
      * tests/metrics (db-init): Ditto.
      e61e7a5c
    • Mathieu Othacehe's avatar
      database: Fix regression. · 53d8b66b
      Mathieu Othacehe authored
      Fix a regression introduced by cbc46267.
      
      * src/cuirass/database.scm (db-get-builds): Collect BuildProducts id field.
      53d8b66b
  6. Jan 15, 2021
  7. Jan 13, 2021
  8. Jan 11, 2021
  9. Jan 07, 2021
    • Mathieu Othacehe's avatar
      Add remote build support. · ca7a7ca9
      Mathieu Othacehe authored
      * src/cuirass/remote.scm: New file.
      * src/cuirass/remote-server.scm: New file.
      * src/cuirass/remote-worker.scm: New file.
      * bin/remote-server.in: New file.
      * bin/remote-worker.in: New file.
      * Makefile.am (bin_SCRIPTS): Add new binaries,
      (dist_pkgmodule_DATA): add new files,
      (EXTRA_DIST): add new binaries,
      (bin/remote-server, bin/remote-worker): new targets.
      * .gitignore: Add new binaries.
      * bin/cuirass.in (%options): Add "--build-remote" option,
      (show-help): document it,
      (main): honor it.
      * src/cuirass/base.scm (with-build-offload-thread): New macro,
      (%build-remote?, %build-offload-channel): new parameters,
      (make-build-offload-thread): new procedure,
      (build-derivations/offload): new procedure,
      (restart-builds): use it to offload builds when %build-remote? is set,
      (build-packages): ditto.
      ca7a7ca9
  10. Dec 09, 2020
    • Mathieu Othacehe's avatar
      Remove debug message. · f65ef23c
      Mathieu Othacehe authored
      src/cuirass/base.scm (build-packages): Remove debug message that can be
      inaccurate if queue-size is superior to 1.
      f65ef23c
    • Mathieu Othacehe's avatar
      Save the build machine. · 3673fc31
      Mathieu Othacehe authored
      * src/sql/upgrade-17.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Builds): Add "machine" field.
      * src/cuirass/database.scm (db-update-build-machine!): New procedure.
      * src/cuirass/base.scm (handle-build-event): Use it to record the machine
      performing the build.
      3673fc31
  11. Dec 08, 2020
    • Mathieu Othacehe's avatar
      Add "queue size" argument. · 697fa145
      Mathieu Othacehe authored
      * bin/cuirass.in (%options): Add "queue-size" argument.
      (show-help): Document it.
      (main): Honor it.
      * src/cuirass/database.scm (%db-writer-queue-size): New parameter,
      (with-queue-writer-worker): use it.
      697fa145
  12. Dec 07, 2020
    • Mathieu Othacehe's avatar
      Fix tests. · ab30c228
      Mathieu Othacehe authored
      This is a follow-up of ad44a9bb.
      
      * tests/http.scm (build-query-result): Add "evaluation" field.
      ab30c228
    • Mathieu Othacehe's avatar
      http: Add /api/evaluation route. · ac2187ff
      Mathieu Othacehe authored
      * src/cuirass/database.scm (db-get-evaluation): New procedure.
      * src/cuirass/http.scm (url-handler): Add "/api/evaluation" route.
      ac2187ff
    • Mathieu Othacehe's avatar
      http: Add evaluation field to hydra-build. · ad44a9bb
      Mathieu Othacehe authored
      * src/cuirass/http.scm (build->hydra-build): Add "evaluation" field.
      ad44a9bb
    • Christopher Baines's avatar
      database: Fix using sqlite-reset in a few queries. · b2c77dd6
      Christopher Baines authored
      Rather than calling sqlite-reset before reading the rows, call sqlite-reset
      after. I think this is important to stop SQLite getting stuck because the
      statement is still live even though it's not being read from after these
      procedures return.
      
      Assuming I've got the ordering right, I think using sqlite-fold-right directly
      is simpler code as well.
      
      * src/cuirass/database.scm (db-get-builds-by-search, format-build-products,
      db-get-events): Rewrite fetching result rows.
      b2c77dd6
    • Christopher Baines's avatar
      database: Remove redundant reset calls. · 23d75284
      Christopher Baines authored
      sqlite-prepare will reset cached statements before returning them, so these
      sqlite-reset calls are redundant.
      
      * src/cuirass/database.scm (db-get-builds-query-min, db-get-builds-query-max):
      Remove sqlite-reset calls.
      23d75284
    • Christopher Baines's avatar
      database: Don't finalise cached statements. · 068ad30a
      Christopher Baines authored
      All these statements are cached, but that's pointless if they're finalized
      after use, because they'll need recreating on next use.
      
      * src/cuirass/database.scm (%sqlite-exec, db-get-builds-query-min,
      db-get-builds-query-max): Replace sqlite-finalize with sqlite-reset.
      068ad30a
  13. Dec 03, 2020
  14. Nov 25, 2020
    • Mathieu Othacehe's avatar
      Use specification for periodic builds. · fd432b8e
      Mathieu Othacehe authored
      When the periodic argument is passed to a job, it will be registered only if
      the time difference between the current time and the registration time of the
      last build is greater than the specified period. Make sure that the last job
      that is searched is part of the same specification.
      
      * src/sql/upgrade-16.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Builds_job_name_timestamp): New index.
      * src/cuirass/database.scm (db-get-time-since-previous-build): Add
      "specification" argument,
      (db-register-builds): pass it.
      fd432b8e
    • Mathieu Othacehe's avatar
      Fix interactive checkout. · e0f97e47
      Mathieu Othacehe authored
      This is a work-around: https://issues.guix.gnu.org/44742.
      
      * src/cuirass/base.scm (fetch-inputs): Set "current-error-port" parameter to a
      void port to prevent the fetch progression bar to appear.
      e0f97e47
    • Mathieu Othacehe's avatar
      Add periodical build support. · 053f9227
      Mathieu Othacehe authored
      * src/cuirass/database.scm (db-get-time-since-previous-build): New procedure,
      (db-register-builds): if the period argument is set, only register builds
      which last registration is older than the specified period.
      053f9227
  15. Nov 02, 2020
    • Mathieu Othacehe's avatar
      Revert "Use a non-blocking socket for store communication." · 3fd0eb15
      Mathieu Othacehe authored
      This reverts commit 38790945 that causes:
      
      2020-11-02T11:05:08 fatal: uncaught exception 'wrong-type-arg' in 'build' fiber!
      2020-11-02T11:05:08 exception arguments: ("struct-vtable" "Wrong type argument in position 1 (expecting struct): ~S" (#f) (#f))
      In ice-9/boot-9.scm:
        1731:15 12 (with-exception-handler #<procedure 7fb1a93f9930 at ic…> …)
        1736:10 11 (with-exception-handler _ _ #:unwind? _ # _)
          718:2 10 (call-with-prompt ("break") #<procedure 7fb1ab76f440 a…> …)
          718:2  9 (call-with-prompt ("continue") #<procedure 7fb1ab77084…> …)
      In ice-9/eval.scm:
          619:8  8 (_ #(#(#<directory (guile-user) 7fb1ac680f00> #<var…> …)))
      In srfi/srfi-1.scm:
          634:9  7 (for-each #<procedure 7fb1a9525900 at cuirass/base.scm…> …)
      In ice-9/boot-9.scm:
        1731:15  6 (with-exception-handler #<procedure 7fb1a95a94e0 at ic…> …)
        1669:16  5 (raise-exception _ #:continuable? _)
        1764:13  4 (_ #<&compound-exception components: (#<&assertion-fail…>)
      In cuirass/utils.scm:
          319:8  3 (_ _ . _)
      In ice-9/boot-9.scm:
        1731:15  2 (with-exception-handler #<procedure 7fb1ab2e3720 at ic…> …)
      In cuirass/utils.scm:
         320:22  1 (_)
      In unknown file:
                 0 (make-stack #t)
      ERROR: In procedure make-stack:
      In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f
      3fd0eb15
  16. Oct 28, 2020
  17. Oct 15, 2020
    • Mathieu Othacehe's avatar
      Use with-db-writer-worker-thread/force macro. · f141dd20
      Mathieu Othacehe authored
      * src/cuirass/database.scm (db-register-builds): Use
      "with-db-writer-worker-thread/force" macro.
      f141dd20
    • Mathieu Othacehe's avatar
      Use the writer worker for all write queries. · df2d1362
      Mathieu Othacehe authored
      * .dir-locals.el: Add "with-queue-writer-worker".
      * bin/cuirass.in: Modify "with-queue-writer-worker" scope to include the
      web-server operations.
      * src/cuirass/database.scm (with-db-writer-worker-thread): Export it.
      (with-db-writer-worker-thread/force): New macro.
      (db-add-input, db-add-checkout, db-add-specification, db-remove-specification,
      db-add-evaluation, db-abort-pending-evaluations, db-set-evaluation-status,
      db-set-evaluation-time, db-add-output, db-add-build-product, db-add-event,
      db-delete-events-with-ids-<=-to): Use "with-db-writer-worker-thread" or
      "with-db-writer-worker-thread/force" instead of "with-db-worker-thread".
      * src/cuirass/metrics.scm (db-update-metrics): Ditto.
      * tests/database.scm ("db-init"): Set "%db-writer-channel".
      * tests/http.scm ("db-init"): Ditto.
      * tests/metrics.scm ("db-init"): Ditto.
      df2d1362
    • Mathieu Othacehe's avatar
      Remove unused procedure. · a0e70b9d
      Mathieu Othacehe authored
      * src/cuirass/base.scm (cancel-old-builds): Remove it.
      a0e70b9d
  18. Oct 14, 2020
    • Mathieu Othacehe's avatar
      Fix tests. · 38ee2c5b
      Mathieu Othacehe authored
      This is a follow-up of b67f38a7.
      
      * src/cuirass/database.scm (catch-sqlite-error): New macro.
      (SQLITE_CONSTRAINT_PRIMARYKEY, SQLITE_CONSTRAINT_UNIQUE, %db-writer-channel):
      New variables.
      * tests/database.scm (with-temporary-database): Set "%db-writer-channel".
      (db-add-build-with-fixed-output): Catch sqlite error.
      (db-get-pending-derivations): Do not add builds with duplicated outputs.
      38ee2c5b
    • Mathieu Othacehe's avatar
      Optimize SQLite database. · 65e3624b
      Mathieu Othacehe authored
      * src/cuirass/database.scm (set-db-options): Optimize database parameters.
      65e3624b
    • Mathieu Othacehe's avatar
      Queue write operations. · b67f38a7
      Mathieu Othacehe authored
      SQLite only allows one concurrent write query operation. Having multiple
      database workers calling "db-update-build-status!", will thus increase worker
      starvation. Every write operation will also be done is a single transaction.
      
      For those reasons, create a database worker dedicated to write queries. Have
      this worker queue work and issue all the queued work queries in a single
      transaction.
      
      * .dir-locals.el: Add with-db-writer-worker-thread.
      * src/cuirass/database.scm (with-queue-writer-worker): Rename
      "with-registration-workers" macro.
      (%db-writer-channel): Rename "%db-registration-channel" variable.
      (with-queue-writer-worker): Rename "with-registration-workers".
      (db-register-builds): Use "with-db-writer-worker-thread" instead of
      "with-db-registration-worker-thread".
      (db-update-build-status!): Ditto
      * src/cuirass/utils.scm (make-worker-thread-channel): Add "queue-size" and
      "queue-proc" arguments.
      (call-with-worker-thread): Add "options" argument.
      * bin/cuirass.in (main): Use "with-queue-writer-worker" instead of
      "with-registration-workers". Modify the macro scope to include all the
      possible write operations.
      b67f38a7
    • Mathieu Othacehe's avatar
      Update metrics in a single transaction. · 514f20a9
      Mathieu Othacehe authored
      * src/cuirass/metrics.scm (db-update-metrics): Update all metrics in a single
      transaction.
      514f20a9
    • Mathieu Othacehe's avatar
      Register new builds in a single transaction. · 038150a3
      Mathieu Othacehe authored
      Registering an evaluation can cause a large number of write queries using
      individual transactions. This is really sub-optimal as commiting a transaction
      will often result in a database sync to the disk.
      
      * src/cuirass/database.scm (db-add-build): Do not create a new transaction for
      each new build, instead ...
      (db-register-builds): ..., create a single transaction per evaluation
      registration.
      038150a3
    • Jonathan Brielmaier's avatar
      doc: Update path for gcroots. · fd7e7b5f
      Jonathan Brielmaier authored
      
      * doc/cuirass.texi (Invoking cuirass): Update path for gcroots.
      
      Signed-off-by: default avatarMathieu Othacehe <othacehe@gnu.org>
      fd7e7b5f
  19. Oct 09, 2020
  20. Oct 07, 2020
    • Mathieu Othacehe's avatar
      Optimize build query. · cb2c4e3d
      Mathieu Othacehe authored
      Make sure that db-get-builds only performs one query and add build products to
      the result. Also add indexes so that all "order" filters are covered.
      
      Limit the maximum of build objects returned in "/api/latestbuilds" and
      "/api/queue" to 1000.
      
      Fixes: <https://issues.guix.gnu.org/43826>.
      
      * src/sql/upgrade-15.sql: New file.
      * Makefile (dist_sql_DATA): Add it.
      * src/cuirass/database.scm (db-get-builds-by-search): Add "buildproducts" to
      the returned build objects.
      (db-get-builds): Remove unused filters. Join Outputs and BuildProducts table
      in the query. Add "buildproducts" to the returned build objects.
      * src/cuirass/http.scm (build->hydra-build): Use "buildproducts" from
      "db-get-builds" procedure.
      (url-handler): Forbid limit parameters greater than 1000 and use
      "buildproducts" from "db-get-builds" procedure.
      * src/schema.sql (Builds_stoptime, Builds_stoptime_id, Builds_status_ts_id):
      New indexes.
      cb2c4e3d
    • Mathieu Othacehe's avatar
      Add index on builds table. · 04e95afa
      Mathieu Othacehe authored
      * src/sql/upgrade-14.sql: New file.
      * src/schema.sql (dist_sql_DATA): Add it.
      * src/schema.sql (Builds_timestamp_stoptime): New index.
      04e95afa
Loading