Skip to content

Commit 663fe15

Browse files
committed
[push] retry on infra error
1 parent b75c704 commit 663fe15

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

internal/sms-gateway/modules/push/service.go

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,18 +172,34 @@ func (s *Service) sendAll(ctx context.Context) {
172172
if err != nil {
173173
s.metrics.IncError(totalMessages)
174174
s.logger.Error("failed to send messages", zap.Int("total", totalMessages), zap.Error(err))
175+
s.retry(ctx, wrappers)
175176
return
176177
}
177178

178-
totalErrors := lo.CountBy(errs, func(err error) bool { return err != nil })
179-
s.metrics.IncError(totalErrors)
179+
failed := lo.Filter(
180+
wrappers,
181+
func(item *eventWrapper, index int) bool {
182+
if err := errs[index]; err != nil {
183+
s.logger.Error("failed to send message", zap.String("token", item.Token), zap.Error(err))
184+
return true
185+
}
180186

181-
for i, err := range errs {
182-
if err == nil {
183-
continue
184-
}
187+
return false
188+
},
189+
)
190+
191+
if len(failed) == 0 {
192+
return
193+
}
194+
195+
s.metrics.IncError(len(failed))
196+
s.logger.Error("failed to send messages", zap.Int("total", totalMessages), zap.Int("failed", len(failed)))
197+
198+
s.retry(ctx, failed)
199+
}
185200

186-
wrapper := wrappers[i]
201+
func (s *Service) retry(ctx context.Context, events []*eventWrapper) {
202+
for _, wrapper := range events {
187203
token := wrapper.Token
188204

189205
wrapper.Retries++

0 commit comments

Comments
 (0)