func()

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
}