AlistGo/alist · error
[doubao_new] create folder failed: empty response
Error message
[doubao_new] create folder failed: empty response
What it means
Doubao_new create-folder empty-result error: the API responded successfully (Code=0) and the body matched CreateFolderResp, but no node in the response carried a usable token (Token/ObjToken/NodeToken all empty after the fallback scan of Entities.Nodes). The folder was apparently created but no identifier for it can be extracted.
Source
Thrown at drivers/doubao_new/util.go:266
err,
)
return Node{}, fmt.Errorf(msg)
}
var node Node
if len(resp.Data.NodeList) > 0 {
if n, ok := resp.Data.Entities.Nodes[resp.Data.NodeList[0]]; ok {
node = n
}
}
if node.Token == "" {
for _, n := range resp.Data.Entities.Nodes {
node = n
break
}
}
if node.Token == "" && node.ObjToken == "" && node.NodeToken == "" {
return Node{}, fmt.Errorf("[doubao_new] create folder failed: empty response")
}
if node.NodeToken == "" {
if node.Token != "" {
node.NodeToken = node.Token
} else if node.ObjToken != "" {
node.NodeToken = node.ObjToken
}
}
if node.ObjToken == "" && node.Token != "" {
node.ObjToken = node.Token
}
return node, nil
}
func (d *DoubaoNew) renameFolder(ctx context.Context, token, name string) error {
if token == "" {
return fmt.Errorf("[doubao_new] rename folder missing token")
}View on GitHub (pinned to 843d9dc814)
Solutions
- Retry the mkdir — transient empty responses occur
- Check whether the folder actually got created (list the parent); if yes, the token extraction is the problem, not creation
- Update the doubao_new driver — token field fallbacks (Token/ObjToken/NodeToken) have been extended as the API changed
- Capture the raw response body and report upstream so the new token field can be added
- Avoid characters in folder names that Doubao may normalize/reject
Defensive patterns
Strategy: validation
Validate before calling
// pre-check the decoded response carries an identifier
func hasNodeToken(n Node) bool {
return n.Token != "" || n.ObjToken != "" || n.NodeToken != ""
}
// after decode:
if !hasNodeToken(node) {
if folderExists(parent, name) { return lookupFolder(parent, name) }
return Node{}, fmt.Errorf("create folder failed: empty response")
} Type guard
func hasNodeToken(n Node) bool {
return n.Token != "" || n.ObjToken != "" || n.NodeToken != ""
} Try / catch
if err := createFolder(...); err != nil {
if strings.Contains(err.Error(), "empty response") {
// folder may exist despite the empty payload; resolve by name instead of failing
if n, lerr := lookupByName(parent, name); lerr == nil { return n, nil }
}
return err
} Prevention
- After this error, list the parent before retrying — the folder often exists
- Update the driver whenever Doubao renames token fields
- Avoid folder names Doubao normalizes (trailing spaces, forbidden chars)
When it happens
Trigger: CreateFolderResp where NodeList is empty, NodeList[0] missing from Entities.Nodes, and every Node entity lacking all three token fields — server-side anomaly, response shape change where tokens moved to a new field, or the 'create' actually being deduplicated into a pre-existing node represented differently.
Common situations: API change renaming token fields, folder name collision handling returning a reference node without tokens, partial server-side failure still returning Code=0, or A/B variants of the endpoint. Rare and typically affects all mkdir calls when it's a schema change.
Related errors
- [doubao_new] merge blocks invalid body len: got=%d expect=%d
- [doubao_new] merge blocks incomplete: %v
- [doubao_new] merge blocks missing seq %d
- [doubao_new] missing block meta for seq %d
- [doubao_new] invalid block size from needed list: seq=%d siz
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/7e443e9d23cd489c.
Report an issue: GitHub.