Context Cancelled Error

context canceled

Quick Answer

The context was cancelled before the operation completed. Check if your timeout is too short or if cancellation is triggered prematurely.

Why This Happens

When a context is cancelled via context.WithCancel, context.WithTimeout, or context.WithDeadline, any operation using that context gets a context.Canceled error. This is normal for timeout scenarios but can indicate a bug if cancellation happens earlier than expected.

The Problem

func fetchData() error {
    ctx, cancel := context.WithTimeout(context.Background(), 1*time.Millisecond)
    defer cancel()
    resp, err := http.NewRequestWithContext(ctx, "GET", "https://api.example.com", nil)
    // context canceled because timeout is too short
    return err
}

The Fix

func fetchData() error {
    ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
    defer cancel()
    req, err := http.NewRequestWithContext(ctx, "GET", "https://api.example.com", nil)
    if err != nil {
        return err
    }
    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        return fmt.Errorf("request failed: %w", err)
    }
    defer resp.Body.Close()
    return nil
}

Step-by-Step Fix

  1. 1

    Identify the context source

    Find where the context is created and what timeout or cancellation is set.

  2. 2

    Check the timing

    Determine if the timeout is too short for the operation, or if cancel() is called prematurely.

  3. 3

    Adjust the timeout

    Increase the timeout or restructure the code so the context is not cancelled before the operation completes.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free