in pkg/queue/message.go [44:81]
func (c *Client) GetAllMessages(ctx context.Context) (*Messages, error) {
var (
allMessages = []*azqueue.DequeuedMessage{}
max int32 = 32 // maximum number of messages for request
failures int = 0
totalFailures int = 0
errs error
allErrs error
dqOpts = azqueue.DequeueMessagesOptions{
NumberOfMessages: &max,
VisibilityTimeout: &twoMinutesInSeconds,
}
)
// Temporarily dequeue all the messages to ensure we don't enqueue a duplicate
for m, err := c.c.DequeueMessages(ctx, &dqOpts); len(m.Messages) != 0; m, err = c.c.DequeueMessages(ctx, &dqOpts) {
if err != nil {
errs = errors.Join(errs, err)
allErrs = errors.Join(allErrs, err)
totalFailures++
failures++
if failures > 4 || totalFailures > 10 {
fmt.Fprintf(os.Stderr, "##vso[task.logissue type=error;]failed to examine messages: %s\n", errs)
break
}
continue
}
allMessages = append(allMessages, m.Messages...)
errs = nil
failures = 0
}
return &Messages{Messages: allMessages}, allErrs
}