AlistGo/alist · error
rename merge file %s: %w
Error message
rename merge file %s: %w
What it means
During a rename-merge in the SJTU driver, moving one child FILE into the renamed folder failed (moveItem with "overwrite" strategy). The message names the file; the wrapped error carries the API failure. Files are force-overwritten, so this is a transport/API error, not a conflict.
Source
Thrown at drivers/sjtu_netdisk/driver.go:420
}
targetDirObj := &model.Object{Path: dstPath, Name: newName, IsFolder: true}
for _, child := range children {
childSrcPath := path.Join(srcObj.GetPath(), child.GetName())
if child.IsDir() {
childObj := &model.Object{
Name: child.GetName(), Path: childSrcPath,
Size: child.GetSize(), IsFolder: true,
}
if _, mergeErr := d.Move(ctx, childObj, targetDirObj); mergeErr != nil {
return nil, fmt.Errorf("rename merge subfolder %s: %w", child.GetName(), mergeErr)
}
} else {
fileErr := d.moveItem(ctx, childSrcPath, dstPath, child.GetName(), false, "overwrite")
if fileErr != nil {
return nil, fmt.Errorf("rename merge file %s: %w", child.GetName(), fileErr)
}
}
}
_ = d.Remove(ctx, srcObj)
return &model.Object{
Name: newName,
Size: srcObj.GetSize(),
IsFolder: true,
Modified: srcObj.ModTime(),
Ctime: srcObj.CreateTime(),
Path: dstPath,
}, nil
}
return nil, fmt.Errorf("unexpected rename folder response: status=%d", resp.StatusCode())
}View on GitHub (pinned to 843d9dc814)
Solutions
- Retry the rename after addressing the wrapped error
- Move/rename the named file manually to confirm it succeeds alone
- Close clients holding the file open, then retry
- Split large renames into smaller batches
Defensive patterns
Strategy: retry
Try / catch
if err != nil && strings.Contains(err.Error(), "rename merge file") {
f := extractFileName(err)
return moveSingleFile(ctx, f)
} Prevention
- Retry the named file individually
- Ensure no other client holds the file
- Keep rename-merges small to reduce failure surface
When it happens
Trigger: Rename folder onto an existing name triggers the merge loop; the per-file move PUT fails for one file (expired token, 5xx, server lock).
Common situations: Bulk merges with one bad file aborting everything; file held open elsewhere; transient API errors under load.
Related errors
- merge file %s: %w
- rename merge: list source folder failed: %w
- rename merge subfolder %s: %w
- copy merge file %s: %w
- merge: list source folder failed: %w
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/2968b3bb3d1d7b04.
Report an issue: GitHub.