branch: main
commit bc14b891945cecf871cca7e7813f857b6872f8bc
Author: Romain GARBAGE <[email protected]>
AuthorDate: Mon Feb 24 15:38:11 2025 +0100

    register: Add support for event logging in the jobset registry.
    
    * src/cuirass/base.scm (jobset-registry, spawn-jobset-registry): Add support
    for event logging.
    * src/cuirass/scripts/register.scm (cuirass-register): Add log event support
    to the jobset registry.
    
    Signed-off-by: Ludovic Courtès <[email protected]>
---
 src/cuirass/base.scm             | 11 +++++++++--
 src/cuirass/scripts/register.scm |  1 +
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/cuirass/base.scm b/src/cuirass/base.scm
index 41e0d5f..3ef6c39 100644
--- a/src/cuirass/base.scm
+++ b/src/cuirass/base.scm
@@ -1003,7 +1003,8 @@ POLLING-PERIOD seconds."
 
 (define* (jobset-registry channel
                           #:key (polling-period 60)
-                          update-service evaluator)
+                          update-service evaluator
+                          event-log)
   (lambda ()
     (spawn-fiber
      (lambda ()
@@ -1027,6 +1028,8 @@ POLLING-PERIOD seconds."
              (#f
               (log-error "cannot update non-existent spec '~s'" name))
              ((_ . monitor)
+              (put-message event-log
+                           `(new-event (jobset-updated ,spec)))
               (put-message monitor `(update-spec ,spec)))))
          (loop registry))
         (`(register ,spec)
@@ -1042,6 +1045,8 @@ POLLING-PERIOD seconds."
                                                   #:polling-period period))
                    (name (specification-name spec)))
               (log-info "registering new jobset '~a'" name)
+              (put-message event-log
+                           `(new-event (jobset-registered ,spec)))
               (loop (vhash-consq name monitor
                                  registry))))
            ((_ . monitor)
@@ -1050,13 +1055,15 @@ POLLING-PERIOD seconds."
             (loop registry))))))))
 
 (define* (spawn-jobset-registry #:key (polling-period 60)
-                                 update-service evaluator)
+                                 update-service evaluator
+                                 event-log)
   "Spawn a jobset registry.  In turn, the registry creates a new jobset
 monitoring actor for each 'register' message it receives."
   (let ((channel (make-channel)))
     (spawn-fiber (jobset-registry channel
                                   #:update-service update-service
                                   #:evaluator evaluator
+                                  #:event-log event-log
                                   #:polling-period polling-period))
     channel))
 
diff --git a/src/cuirass/scripts/register.scm b/src/cuirass/scripts/register.scm
index e977458..38db9a5 100644
--- a/src/cuirass/scripts/register.scm
+++ b/src/cuirass/scripts/register.scm
@@ -302,6 +302,7 @@
                      (let ((registry (spawn-jobset-registry
                                       #:update-service update-service
                                       #:evaluator evaluator
+                                      #:event-log event-log-service
                                       #:polling-period interval)))
                        ;; Spawn the bridge through which other 'cuirass'
                        ;; processes, such as 'cuirass web', may talk to the

Reply via email to