Skip to content

Commit 0731eb5

Browse files
authored
chore: change done queue to zset (#35)
1 parent 1d5c10b commit 0731eb5

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

pkg/services/processing_results_service.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,16 @@ func NewProcessingResultsService(timeSvc TimeService, redisStore RedisStore, ret
2929
}
3030

3131
func (s *processingResultsService) HandleFailed(ctx context.Context, sink *models.Sink, m *models.Message, processingErr error) (*models.QueuedInfo, error) {
32-
now := s.timeSvc.Now()
3332
m.DeliveryAttempts = append(m.DeliveryAttempts,
3433
&models.DeliveryAttempt{
35-
At: now,
34+
At: s.timeSvc.Now(),
3635
Status: models.DeliveryAttemptStatusFailed,
3736
Error: processingErr.Error(),
3837
},
3938
)
4039

4140
nextAttemptInterval := s.retryCalculator.NextAttemptInterval(len(m.DeliveryAttempts), sink.RetryInterval, sink.RetryExpMultiplier)
42-
m.DeliverAfter = now.Add(nextAttemptInterval)
41+
m.DeliverAfter = s.timeSvc.Now().Add(nextAttemptInterval)
4342

4443
var maxAttempts int
4544
if sink.MaxAttempts == nil {
@@ -67,7 +66,7 @@ func (s *processingResultsService) HandleFailed(ctx context.Context, sink *model
6766
return &models.QueuedInfo{MessageID: m.ID, QueueStatus: models.QueueStatusDead, DeliverAfter: m.DeliverAfter}, nil
6867
}
6968

70-
queueStatus := getQueueStatus(m, now)
69+
queueStatus := getQueueStatus(m, s.timeSvc.Now())
7170
destQueueKey := queueKey(m.FlowID, m.SinkID, queueStatus)
7271

7372
switch queueStatus {
@@ -106,7 +105,7 @@ func (s *processingResultsService) HandleOK(ctx context.Context, m *models.Messa
106105
}
107106

108107
// update message and move to done
109-
err = s.redisStore.SetAndMove(ctx, mKey, b, sourceQueueKey, destQueueKey, m.ID)
108+
err = s.redisStore.SetLRemZAdd(ctx, mKey, b, sourceQueueKey, destQueueKey, m.ID, float64(s.timeSvc.Now().Unix()))
110109
if err != nil {
111110
return errors.Wrapf(err, "failed to set and move to done")
112111
}

pkg/services/processing_results_service_test.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestProcessingResultsServiceHandleOK(t *testing.T) {
2424
retryCalculator := mocks.NewMockRetryCalculator(ctrl)
2525

2626
now := time.Date(2023, 05, 5, 8, 9, 12, 0, time.UTC)
27-
timeSvc.EXPECT().Now().Return(now)
27+
timeSvc.EXPECT().Now().AnyTimes().Return(now)
2828

2929
flowID := "flow-1"
3030
sinkID := "sink-1"
@@ -56,7 +56,7 @@ func TestProcessingResultsServiceHandleOK(t *testing.T) {
5656
b, err := json.Marshal(&mUpdated)
5757
assert.NoError(t, err)
5858

59-
redisStore.EXPECT().SetAndMove(ctx, messageKey, b, sourceQueueKey, destQueueKey, mID).Return(nil)
59+
redisStore.EXPECT().SetLRemZAdd(ctx, messageKey, b, sourceQueueKey, destQueueKey, mID, float64(now.Unix())).Return(nil)
6060

6161
s := NewProcessingResultsService(timeSvc, redisStore, retryCalculator)
6262
err = s.HandleOK(ctx, m)
@@ -74,7 +74,7 @@ func TestProcessingResultsServiceHandleFailed_Dead(t *testing.T) {
7474
retryCalculator := mocks.NewMockRetryCalculator(ctrl)
7575

7676
now := time.Date(2023, 05, 5, 8, 9, 12, 0, time.UTC)
77-
timeSvc.EXPECT().Now().Return(now)
77+
timeSvc.EXPECT().Now().AnyTimes().Return(now)
7878

7979
flowID := "flow-1"
8080
sinkID := "sink-1"
@@ -146,7 +146,7 @@ func TestProcessingResultsServiceHandleFailed_Scheduled(t *testing.T) {
146146
retryCalculator := mocks.NewMockRetryCalculator(ctrl)
147147

148148
now := time.Date(2023, 05, 5, 8, 9, 12, 0, time.UTC)
149-
timeSvc.EXPECT().Now().Return(now)
149+
timeSvc.EXPECT().Now().AnyTimes().Return(now)
150150

151151
flowID := "flow-1"
152152
sinkID := "sink-1"
@@ -217,7 +217,7 @@ func TestProcessingResultsServiceHandleFailed_Ready(t *testing.T) {
217217
retryCalculator := mocks.NewMockRetryCalculator(ctrl)
218218

219219
now := time.Date(2023, 05, 5, 8, 9, 12, 0, time.UTC)
220-
timeSvc.EXPECT().Now().Return(now)
220+
timeSvc.EXPECT().Now().AnyTimes().Return(now)
221221

222222
flowID := "flow-1"
223223
sinkID := "sink-1"

0 commit comments

Comments
 (0)