diff options
author | Christopher Baines <mail@cbaines.net> | 2024-04-15 14:44:51 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2024-04-15 16:15:05 +0100 |
commit | 3fe9d36dd948a2f833d2a3ec4ef27e5f5ff205cf (patch) | |
tree | 5659d446b7496355003c9bf110a30af0195fe343 | |
parent | 3b05aa5f924c6c199ac8da0653223ad9ef55ce83 (diff) | |
download | nar-herder-3fe9d36dd948a2f833d2a3ec4ef27e5f5ff205cf.tar nar-herder-3fe9d36dd948a2f833d2a3ec4ef27e5f5ff205cf.tar.gz |
Fix ever increasing recent changes metric
As processed recent changes were being counted as new.
-rw-r--r-- | nar-herder/recent-changes.scm | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/nar-herder/recent-changes.scm b/nar-herder/recent-changes.scm index e4fe7d1..26d1027 100644 --- a/nar-herder/recent-changes.scm +++ b/nar-herder/recent-changes.scm @@ -137,26 +137,32 @@ (log-msg 'ERROR "exception in recent change listener " exn) #f) (lambda () - (let ((recent-changes - (database-select-recent-changes database after))) - - (metric-increment recent-changes-count-metric - #:by (length recent-changes)) - - (for-each - (lambda (change-details) - (when (not (member change-details - last-processed-recent-changes)) + (let* ((recent-changes + (database-select-recent-changes database after)) + (unprocessed-recent-changes + (remove + (lambda (change-details) + (member change-details last-processed-recent-changes)) + recent-changes))) + + (unless (null? unprocessed-recent-changes) + (metric-increment recent-changes-count-metric + #:by (length unprocessed-recent-changes)) + + (for-each + (lambda (change-details) (let ((change (assq-ref change-details 'change))) (cond ((string=? change "addition") (process-addition-change change-details)) ((string=? change "removal") (process-removal-change change-details)) - (else #f))))) - recent-changes) + (else #f)))) + unprocessed-recent-changes)) - recent-changes)) + ;; Use the unprocessed recent changes here to carry + ;; forward all processed changes to the next pass + unprocessed-recent-changes)) #:unwind? #t) (#f (loop after '())) (recent-changes |