AlistGo/alist · error

DelDir failed, task status is %s

Error message

DelDir failed, task status is %s

What it means

Meilisearch DelDir builds a filter 'parent IN [...]' and calls DeleteDocumentsByFilter; the submitted task is polled via getTaskStatus and finished with a status other than succeeded, so the directory delete is reported as failed.

Source

Thrown at internal/search/meilisearch/search.go:166

func (m *Meilisearch) DelDirChild(ctx context.Context, prefix string) error {
	dfs, err := m.getParentsByPrefix(ctx, utils.FixAndCleanPath(prefix))
	if err != nil {
		return err
	}
	utils.SliceReplace(dfs, func(src string) string {
		return "'" + strings.ReplaceAll(src, "'", "\\'") + "'"
	})
	s := fmt.Sprintf("parent IN [%s]", strings.Join(dfs, ","))
	task, err := m.Client.Index(m.IndexUid).DeleteDocumentsByFilter(s)
	if err != nil {
		return err
	}
	taskStatus, err := m.getTaskStatus(ctx, task.TaskUID)
	if err != nil {
		return err
	}
	if taskStatus != meilisearch.TaskStatusSucceeded {
		return fmt.Errorf("DelDir failed, task status is %s", taskStatus)
	}
	return nil
}

func (m *Meilisearch) Del(ctx context.Context, prefix string) error {
	prefix = utils.FixAndCleanPath(prefix)
	dir, name := path.Split(prefix)
	get, err := m.getDocumentsByParent(ctx, dir[:len(dir)-1])
	if err != nil {
		return err
	}
	var document *searchDocument
	for _, v := range get {
		if v.Name == name {
			document = v
			break
		}
	}

View on GitHub (pinned to 843d9dc814)

Solutions

  1. Inspect the failed task in Meilisearch's /tasks endpoint for the concrete error
  2. If the filter is malformed (quotes/backslashes in directory names), fix the escaping or rename the directory
  3. Ensure Meilisearch is healthy and has disk/memory headroom, then retry the delete
  4. As a last resort run Clear on the index and rebuild it
Defensive patterns

Strategy: retry

Try / catch

if err := searcher.DelDir(ctx, dir); err != nil {
    if strings.Contains(err.Error(), "task status is") {
        // transient task failure: wait, verify task outcome, retry once; on repeat failure inspect Meilisearch /tasks and consider index rebuild
    }
}

Prevention

When it happens

Trigger: Deleting a directory that contains indexed files while Meilisearch tasks fail — malformed filter expression (unescaped quotes in parent paths), server resource exhaustion, or a read-only/degraded Meilisearch node.

Common situations: Paths containing single quotes or special characters that break the filter syntax after escaping; Meilisearch restart mid-task; version mismatch between client and server filter API.

Related errors


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