v1.1.3

Errors

Last updated


This page lists every error message go-queue returns or logs, what triggers it, and how to match it.

Error Messages


SourceMessageTrigger
Startqueue already startedAlready Running
Startqueue already closedAlready Closed
Enqueuectx.Err() as-isThe passed ctx is cancelled or expired
Enqueueenqueue failed: staging queue is fullHeap length reached Config.Size
Enqueueenqueue failed: staging queue is closedShutdown was called
Shutdownshutdown timeout: N tasks remainingctx expired before the heap drained
Task (logged)task timeout after <d>Task exceeded its timeout
Task (logged)panic: <value>Task function panicked
Task (logged)context canceledThe Start ctx was cancelled, or the Shutdown deadline expired while the task was running or still queued

Matching Errors


ctx errors from Enqueue are returned unwrapped, so errors.Is(err, context.Canceled) and errors.Is(err, context.DeadlineExceeded) work. The full / closed errors have no exported sentinel and can only be matched by message:
  1. if _, err := q.Enqueue(ctx, "email", sendEmail); err != nil {
  2. switch {
  3. case errors.Is(err, context.Canceled), errors.Is(err, context.DeadlineExceeded):
  4. // caller gave up
  5. case strings.Contains(err.Error(), "staging queue is full"):
  6. // back off and retry later
  7. case strings.Contains(err.Error(), "staging queue is closed"):
  8. // queue is shutting down
  9. }
  10. }

Task-side errors never return to the caller; they appear in Log Events.
中文