Skip to content

Commit e4e90f0

Browse files
committed
Add debug logs for failed bulk messages
1 parent c2c5ffd commit e4e90f0

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

api/pkg/handlers/bulk_message_handler.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package handlers
33
import (
44
"fmt"
55
"sync"
6+
"sync/atomic"
67

78
"github.com/NdoleStudio/httpsms/pkg/requests"
89
"github.com/google/uuid"
@@ -85,22 +86,25 @@ func (h *BulkMessageHandler) Store(c *fiber.Ctx) error {
8586

8687
requestID := uuid.New()
8788
wg := sync.WaitGroup{}
88-
for _, message := range messages {
89+
count := atomic.Int64{}
90+
91+
for index, message := range messages {
8992
wg.Add(1)
90-
go func(message *requests.BulkMessage) {
93+
go func(message *requests.BulkMessage, index int) {
94+
count.Add(1)
9195
_, err = h.messageService.SendMessage(
9296
ctx,
9397
message.ToMessageSendParams(h.userIDFomContext(c), requestID, c.OriginalURL()),
9498
)
95-
9699
if err != nil {
97-
msg := fmt.Sprintf("cannot send message with paylod [%s]", c.Body())
100+
count.Add(-1)
101+
msg := fmt.Sprintf("cannot send message with paylod [%s] at index [%d]", spew.Sdump(message), index)
98102
ctxLogger.Error(stacktrace.Propagate(err, msg))
99103
}
100104
wg.Done()
101-
}(message)
105+
}(message, index)
102106
}
103107

104108
wg.Wait()
105-
return h.responseAccepted(c, fmt.Sprintf("Added %d messages to the queue", len(messages)))
109+
return h.responseAccepted(c, fmt.Sprintf("Added %d out of %d messages to the queue", count.Load(), len(messages)))
106110
}

api/pkg/handlers/message_handler.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"strings"
66
"sync"
7+
"sync/atomic"
78
"time"
89

910
"github.com/NdoleStudio/httpsms/pkg/entities"
@@ -153,18 +154,21 @@ func (h *MessageHandler) BulkSend(c *fiber.Ctx) error {
153154
wg := sync.WaitGroup{}
154155
params := request.ToMessageSendParams(h.userIDFomContext(c), c.OriginalURL())
155156
responses := make([]*entities.Message, len(params))
157+
count := atomic.Int64{}
156158

157159
for index, message := range params {
158160
wg.Add(1)
159161
go func(message services.MessageSendParams, index int) {
162+
count.Add(1)
160163
if message.SendAt == nil {
161164
sentAt := time.Now().UTC().Add(time.Duration(index) * time.Second)
162165
message.SendAt = &sentAt
163166
}
164167

165168
response, err := h.service.SendMessage(ctx, message)
166169
if err != nil {
167-
msg := fmt.Sprintf("cannot send message with paylod [%s]", c.Body())
170+
count.Add(-1)
171+
msg := fmt.Sprintf("cannot send message with paylod [%s] at index [%d]", spew.Sdump(message), index)
168172
ctxLogger.Error(stacktrace.Propagate(err, msg))
169173
}
170174
responses[index] = response
@@ -173,7 +177,7 @@ func (h *MessageHandler) BulkSend(c *fiber.Ctx) error {
173177
}
174178

175179
wg.Wait()
176-
return h.responseOK(c, fmt.Sprintf("[%d] messages processed successfully", len(responses)), responses)
180+
return h.responseOK(c, fmt.Sprintf("%d out of %d messages processed successfully", count.Load(), len(responses)), responses)
177181
}
178182

179183
// GetOutstanding returns an entities.Message which is still to be sent by the mobile phone

0 commit comments

Comments
 (0)