AlistGo/alist · error
wukong commit upload inner failed: uri_status=%d
Error message
wukong commit upload inner failed: uri_status=%d
What it means
Thrown by commitUploadInner when the commit response's first result has a URIStatus that is neither 0 nor 2000 (minUploadSubmitSuccess). The VOD service reported that the committed StoreURI's data is in a bad state (e.g. incomplete, corrupt, or quarantined) even though the commit request itself was processed.
Source
Thrown at drivers/wukong/driver.go:477
"Action": "CommitUploadInner",
"Version": "2020-11-19",
"SpaceName": spaceName,
}
body, _ := json.Marshal(map[string]any{
"SessionKey": sessionKey,
"Functions": []any{},
})
var resp commitUploadInnerResp
if err := d.vodRequest(ctx, http.MethodPost, q, body, auth, &resp); err != nil {
return "", err
}
if resp.ResponseMetadata.Error.Code != "" {
return "", fmt.Errorf("wukong commit upload inner failed: %s", resp.ResponseMetadata.Error.Message)
}
if len(resp.Result.Results) > 0 {
status := resp.Result.Results[0].URIStatus
if status != 0 && status != minUploadSubmitSuccess {
return "", fmt.Errorf("wukong commit upload inner failed: uri_status=%d", status)
}
}
return extractVideoVid(&resp), nil
}
func (d *Wukong) uploadSubmit(ctx context.Context, fatherID, fileName, ext string, fileType int, size int64, md5Hex, storeURI, videoVid string) error {
var resp uploadSubmitResp
body := map[string]any{
"base_info": map[string]any{
"father_id": asIDValue(fatherID),
"file_type": fileType,
"size": size,
"extension": ext,
"file_name": fileName,
"is_directory": 0,
"md5": md5Hex,
"slice_md5": md5Hex,
},View on GitHub (pinned to 843d9dc814)
Solutions
- Restart the upload end-to-end with a new session (applyUploadInner → upload → commit) ensuring disk space for the temp cache
- Verify local file size and readability before Put so the full stream reaches TOS
- Log the numeric uri_status and correlate with the VOD error table to identify the exact data-state problem
- If reproducible for one file, test uploading it via the Wukong web UI to isolate driver vs. upstream
Defensive patterns
Strategy: retry
Try / catch
vid, err := d.commitUploadInner(ctx, auth, spaceName, sessionKey)
if err != nil && strings.Contains(err.Error(), "uri_status=") {
// committed data is bad: full re-upload is the only safe path
return fmt.Errorf("uploaded data rejected by VOD (uri_status), re-upload required: %w", err)
} Prevention
- Ensure temp-file caching completes before upload so byte counts are exact
- Check free disk space before CacheFullInTempFile
- Log uri_status values to build a mapping of upstream data-state failures
When it happens
Trigger: Uploading zero bytes or truncated data to TOS then committing; part of a multipart upload silently missing; CRC mismatch on the storage side; StoreURI data replaced or expired before commit.
Common situations: Upload where the temp file cache was truncated (disk full during CacheFullInTempFile); multipart finish accepted with code 4024 but parts incomplete; very small files hitting an edge case in the direct-upload path.
Related errors
- wukong commit upload inner failed: %s
- wukong get upload auth token failed: code=%d message=%s
- wukong get upload candidates failed: %s
- wukong apply upload inner failed: %s
- wukong upload submit failed: code=%d message=%s
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/67de5ca93f5785f2.
Report an issue: GitHub.