AlistGo/alist · critical

renames is required

Error message

renames is required

What it means

Returned by Terabox getFiles (drivers/terabox/util.go:155) when a paginated /api/list call reports errno 9000: the same regional-availability block as at Init, but surfacing mid-use during List() of a directory. The storage initialized earlier but the egress region is now being treated as unsupported.

Source

Thrown at drivers/123_open/other.go:269

	if err != nil {
		return nil, err
	}
	if err := d.client.File.RecoverTo(ctx, fileIDs, req.ParentFileID); err != nil {
		return nil, err
	}
	return okResult{Success: true}, nil
}

func otherBatchRename(d *Open123, ctx context.Context, args model.OtherArgs) (interface{}, error) {
	// JSON object keys are strings, so the id keys are parsed here.
	var req struct {
		Renames map[string]string `json:"renames"`
	}
	if err := decodeOtherArgs(args.Data, &req); err != nil {
		return nil, err
	}
	if len(req.Renames) == 0 {
		return nil, errors.New("renames is required")
	}
	renames := make(map[int64]string, len(req.Renames))
	for id, name := range req.Renames {
		fileID, err := parseFileID(id)
		if err != nil {
			return nil, err
		}
		renames[fileID] = name
	}
	return d.client.File.BatchRename(ctx, renames)
}

func otherListV1(d *Open123, ctx context.Context, args model.OtherArgs) (interface{}, error) {
	var req struct {
		ParentFileID   int64  `json:"parent_file_id"`
		Page           int    `json:"page"`
		Limit          int    `json:"limit"`
		OrderBy        string `json:"order_by"`

View on GitHub (pinned to 843d9dc814)

Solutions

  1. Restore egress through a supported region (VPN/proxy) and retry the listing.
  2. If persistent, re-verify with Init — a consistent 9000 means the whole storage is affected, not one folder.
  3. Track driver/upstream announcements: region handling sometimes moves to a different domain/variant requiring a driver update.

Example fix

// before
files, err := d.getFiles(dir.GetPath()) // errno 9000 mid-session

// after
files, err := d.getFiles(dir.GetPath())
if err != nil && strings.Contains(err.Error(), "not yet available in this area") {
	return nil, fmt.Errorf("%w (egress region changed; route via supported region)", err)
}
Defensive patterns

Strategy: fallback

Type guard

func isTeraboxAreaErr(err error) bool {
	return err != nil && strings.Contains(err.Error(), "not yet available in this area")
}

Try / catch

files, err := d.getFiles(path)
if isTeraboxAreaErr(err) {
	// fall back to cached listing if available; alert operator to fix egress region
}

Prevention

When it happens

Trigger: Browsing a Terabox folder while the server's IP is classified into a blocked region (VPN changed, ISP re-routed, new datacenter IP range classification); intermittent geo-fencing on some list shards.

Common situations: Long-running mounts that worked at Init and later start failing every List; failover or proxy changes moving traffic to a different region; Terabox expanding its geo-block.

Related errors


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