From 196d66f2211cacf43053bfaeba4bd59bc26b59e8 Mon Sep 17 00:00:00 2001 From: Ken Hibino Date: Sat, 26 Dec 2020 14:35:25 -0800 Subject: [PATCH] Fix ListSchedulerEnqueueEvents to list recent events first --- internal/rdb/inspect.go | 2 +- internal/rdb/inspect_test.go | 37 ++++++++++++++++++++---------------- tools/asynq/cmd/cron.go | 6 ------ 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/internal/rdb/inspect.go b/internal/rdb/inspect.go index d5933cb..df6a0aa 100644 --- a/internal/rdb/inspect.go +++ b/internal/rdb/inspect.go @@ -855,7 +855,7 @@ func (r *RDB) ListSchedulerEntries() ([]*base.SchedulerEntry, error) { // ListSchedulerEnqueueEvents returns the list of scheduler enqueue events. func (r *RDB) ListSchedulerEnqueueEvents(entryID string, pgn Pagination) ([]*base.SchedulerEnqueueEvent, error) { key := base.SchedulerHistoryKey(entryID) - zs, err := r.client.ZRangeWithScores(key, pgn.start(), pgn.stop()).Result() + zs, err := r.client.ZRevRangeWithScores(key, pgn.start(), pgn.stop()).Result() if err != nil { return nil, err } diff --git a/internal/rdb/inspect_test.go b/internal/rdb/inspect_test.go index fe831c4..c274c8d 100644 --- a/internal/rdb/inspect_test.go +++ b/internal/rdb/inspect_test.go @@ -3033,9 +3033,10 @@ func TestSchedulerEnqueueEvents(t *testing.T) { r := setup(t) var ( - now = time.Now() - oneDayAgo = now.Add(-24 * time.Hour) - oneHourAgo = now.Add(-1 * time.Hour) + now = time.Now() + oneDayAgo = now.Add(-24 * time.Hour) + fiveHoursAgo = now.Add(-5 * time.Hour) + oneHourAgo = now.Add(-1 * time.Hour) ) type event struct { @@ -3047,22 +3048,26 @@ func TestSchedulerEnqueueEvents(t *testing.T) { tests := []struct { entryID string events []*base.SchedulerEnqueueEvent + want []*base.SchedulerEnqueueEvent }{ { entryID: "entry123", - events: []*base.SchedulerEnqueueEvent{ - { - TaskID: "task123", - EnqueuedAt: oneDayAgo, - }, { - TaskID: "task456", - EnqueuedAt: oneHourAgo, - }, + events: []*base.SchedulerEnqueueEvent{ + {TaskID: "task123", EnqueuedAt: oneDayAgo}, + {TaskID: "task789", EnqueuedAt: oneHourAgo}, + {TaskID: "task456", EnqueuedAt: fiveHoursAgo}, + }, + // Recent events first + want: []*base.SchedulerEnqueueEvent{ + {TaskID: "task789", EnqueuedAt: oneHourAgo}, + {TaskID: "task456", EnqueuedAt: fiveHoursAgo}, + {TaskID: "task123", EnqueuedAt: oneDayAgo}, }, }, { - entryID: "entry123", - events: []*base.SchedulerEnqueueEvent{}, + entryID: "entry456", + events: nil, + want: nil, }, } @@ -3076,14 +3081,14 @@ loop: continue loop } } - got, err := r.ListSchedulerEnqueueEvents(tc.entryID) + got, err := r.ListSchedulerEnqueueEvents(tc.entryID, Pagination{Size: 20, Page: 0}) if err != nil { t.Errorf("ListSchedulerEnqueueEvents(%q) failed: %v", tc.entryID, err) continue } - if diff := cmp.Diff(tc.events, got, h.SortSchedulerEnqueueEventOpt, timeCmpOpt); diff != "" { + if diff := cmp.Diff(tc.want, got, timeCmpOpt); diff != "" { t.Errorf("ListSchedulerEnqueueEvent(%q) = %v, want %v; (-want,+got)\n%s", - tc.entryID, got, tc.events, diff) + tc.entryID, got, tc.want, diff) } } } diff --git a/tools/asynq/cmd/cron.go b/tools/asynq/cmd/cron.go index 23a61db..a7cffd1 100644 --- a/tools/asynq/cmd/cron.go +++ b/tools/asynq/cmd/cron.go @@ -118,12 +118,6 @@ func cronHistory(cmd *cobra.Command, args []string) { continue } - // Sort entries by enqueuedAt timestamp. - sort.Slice(events, func(i, j int) bool { - x, y := events[i], events[j] - return x.EnqueuedAt.Unix() > y.EnqueuedAt.Unix() - }) - cols := []string{"TaskID", "EnqueuedAt"} printRows := func(w io.Writer, tmpl string) { for _, e := range events {