AlistGo/alist · warning

the task has been deleted

Error message

the task has been deleted

What it means

PikPak.Status() initializes a status with the terminal message 'the task has been deleted' and only overwrites it when the task's ID is found in the cached task list. If the loop finishes without a match, that status (with s.Err set) is returned as-is, marking the task finished-with-error. The task no longer exists on PikPak's side.

Source

Thrown at internal/offline_download/pikpak/pikpak.go:136

		Status:    "the task has been deleted",
		Err:       nil,
	}
	for _, t := range tasks {
		if t.ID == task.GID {
			s.Progress = float64(t.Progress)
			s.Status = t.Message
			s.Completed = (t.Phase == "PHASE_TYPE_COMPLETE")
			s.TotalBytes, err = strconv.ParseInt(t.FileSize, 10, 64)
			if err != nil {
				s.TotalBytes = 0
			}
			if t.Phase == "PHASE_TYPE_ERROR" {
				s.Err = fmt.Errorf(t.Message)
			}
			return s, nil
		}
	}
	s.Err = fmt.Errorf("the task has been deleted")
	return s, nil
}

func init() {
	tool.Tools.Add(&PikPak{})
}

View on GitHub (pinned to 843d9dc814)

Solutions

  1. Accept the terminal status: remove the local task record since the remote task is gone
  2. If the download is still needed, re-add the URL to create a fresh task
  3. After re-linking the PikPak account, clear stale task records whose GIDs reference the old account

Example fix

// caller handling
s, err := p.Status(task)
if err == nil && s.Err != nil && strings.Contains(s.Err.Error(), "has been deleted") {
    // terminal: remote task no longer exists
    _ = deleteLocalTask(task.ID)
}
Defensive patterns

Strategy: fallback

Try / catch

s, err := p.Status(task)
if err != nil {
    return err
}
if s.Err != nil && strings.Contains(s.Err.Error(), "has been deleted") {
    // terminal: remote task gone, remove local record and stop
    markCompletedAndCleanup(task)
}

Prevention

When it happens

Trigger: The remote PikPak offline task was deleted (web UI, expiry, or another client) while the local record still polls it; GetTasks cache returned a list that does not contain task.GID.

Common situations: Users cleaning up their PikPak download list from the phone app; tasks whose IDs changed after account re-linking; finished tasks auto-purged by the platform.

Related errors


AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15). Data as JSON: /api/errors/01216f06866406cf. Report an issue: GitHub.