From dc7d6ef441ae28a800fcb7f0c9f73fda33b5192f Mon Sep 17 00:00:00 2001 From: Subbarao Vakati <52436067+snarkychef@users.noreply.github.com> Date: Mon, 16 Sep 2024 05:37:45 -0500 Subject: [PATCH] fix: replace counter with gauge cron tracker alert (#5084) --- warehouse/router/tracker.go | 8 +++++--- warehouse/router/tracker_test.go | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/warehouse/router/tracker.go b/warehouse/router/tracker.go index 629a58ae8e..d66bc0ffe3 100644 --- a/warehouse/router/tracker.go +++ b/warehouse/router/tracker.go @@ -23,13 +23,14 @@ import ( // CronTracker Track the status of the staging file whether it has reached the terminal state or not for every warehouse // we pick the staging file which is oldest within the range NOW() - 2 * syncFrequency and NOW() - 3 * syncFrequency func (r *Router) CronTracker(ctx context.Context) error { - tick := r.statsFactory.NewTaggedStat("warehouse_cron_tracker_tick", stats.CountType, stats.Tags{ + cronTrackerExecTimestamp := r.statsFactory.NewTaggedStat("warehouse_cron_tracker_timestamp_seconds", stats.GaugeType, stats.Tags{ "module": moduleName, "destType": r.destType, }) for { - tick.Count(1) + execTime := time.Now() + cronTrackerExecTimestamp.Gauge(execTime.Unix()) r.configSubscriberLock.RLock() warehouses := append([]model.Warehouse{}, r.warehouses...) @@ -51,11 +52,12 @@ func (r *Router) CronTracker(ctx context.Context) error { } } + nextExecTime := execTime.Add(r.config.uploadStatusTrackFrequency) select { case <-ctx.Done(): r.logger.Infon("context is cancelled, stopped running tracking") return nil - case <-time.After(r.config.uploadStatusTrackFrequency): + case <-time.After(time.Until(nextExecTime)): } } } diff --git a/warehouse/router/tracker_test.go b/warehouse/router/tracker_test.go index 716a67d062..5de2942076 100644 --- a/warehouse/router/tracker_test.go +++ b/warehouse/router/tracker_test.go @@ -215,16 +215,17 @@ func TestRouter_CronTracker(t *testing.T) { mockLogger.EXPECT().Infon("context is cancelled, stopped running tracking").Times(1) + executionTime := time.Now().Unix() err = r.CronTracker(ctx) require.NoError(t, err) - m := statsStore.GetByName("warehouse_cron_tracker_tick") + m := statsStore.GetByName("warehouse_cron_tracker_timestamp_seconds") require.Equal(t, len(m), 1) - require.Equal(t, m[0].Name, "warehouse_cron_tracker_tick") + require.Equal(t, m[0].Name, "warehouse_cron_tracker_timestamp_seconds") require.Equal(t, m[0].Tags, stats.Tags{ "module": moduleName, "destType": warehouseutils.POSTGRES, }) - require.GreaterOrEqual(t, m[0].Value, 1.0) + require.GreaterOrEqual(t, m[0].Value, float64(executionTime)) }) }