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
- Inspect the failed task in Meilisearch's /tasks endpoint for the concrete error
- If the filter is malformed (quotes/backslashes in directory names), fix the escaping or rename the directory
- Ensure Meilisearch is healthy and has disk/memory headroom, then retry the delete
- 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
- Keep Meilisearch healthy and resourced before bulk deletes
- Avoid directory names with quote/backslash characters that stress filter escaping
- Monitor failed task counts in Meilisearch
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
- index creation failed, task status is %s
- wukong delete failed: code=%d message=%s
- SearchNotAvailable
- page can't < 1
- per_page can't < 1
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/0c177842dd61e7e2.
Report an issue: GitHub.