From 400fc0b4c2939c588afd86c0cacbd95d90c5e23a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Duffeck?= Date: Wed, 14 May 2025 09:03:08 +0200 Subject: [PATCH] Do not reset the timer when new activities are queued --- services/activitylog/pkg/service/service.go | 22 ++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/services/activitylog/pkg/service/service.go b/services/activitylog/pkg/service/service.go index 2be7ba8db1..db61abc323 100644 --- a/services/activitylog/pkg/service/service.go +++ b/services/activitylog/pkg/service/service.go @@ -92,17 +92,19 @@ func (d *Debouncer) Debounce(id string, ra RawActivity) { defer d.mutex.Unlock() activities := []RawActivity{ra} + item := &queueItem{ + activities: activities, + } if i, ok := d.pending.Load(id); ok { - item, ok := i.(*queueItem) + // if the item is already in the queue, append the new activities + item, ok = i.(*queueItem) if ok { - activities = append(item.activities, ra) + item.activities = append(item.activities, ra) } - item.timer.Stop() } - d.pending.Store(id, &queueItem{ - activities: activities, - timer: time.AfterFunc(d.after, func() { + if item.timer == nil { + item.timer = time.AfterFunc(d.after, func() { if _, ok := d.inProgress.Load(id); ok { // Reschedule this run for when the previous run has finished d.mutex.Lock() @@ -117,9 +119,11 @@ func (d *Debouncer) Debounce(id string, ra RawActivity) { d.pending.Delete(id) d.inProgress.Store(id, true) defer d.inProgress.Delete(id) - d.f(id, activities) - }), - }) + d.f(id, item.activities) + }) + } + + d.pending.Store(id, item) } // New creates a new ActivitylogService