juicedata/juicefs · error
delimiter should be a rune but now is %s
Error message
delimiter should be a rune but now is %s
What it means
Returned by swiftOSS.List when the delimiter parameter is a string of zero or multiple runes. The Swift API takes a single rune delimiter for common-prefix listing, so any multi-character delimiter is rejected before the request is sent.
Source
Thrown at pkg/object/swift.go:90
func (s *swiftOSS) Delete(ctx context.Context, key string, getters ...AttrGetter) error {
err := s.conn.ObjectDelete(ctx, s.container, key)
if err != nil && errors.Is(err, swift.ObjectNotFound) {
err = nil
}
return err
}
func (s *swiftOSS) List(ctx context.Context, prefix, marker, token, delimiter string, limit int64, followLink bool) ([]Object, bool, string, error) {
if limit > 10000 {
limit = 10000
}
var delimiter_ rune
if delimiter != "" {
if len([]rune(delimiter)) == 1 {
delimiter_ = []rune(delimiter)[0]
} else {
return nil, false, "", fmt.Errorf("delimiter should be a rune but now is %s", delimiter)
}
}
objects, err := s.conn.Objects(ctx, s.container, &swift.ObjectsOpts{Prefix: prefix, Marker: marker, Delimiter: delimiter_, Limit: int(limit)})
if err != nil {
return nil, false, "", err
}
var objs = make([]Object, len(objects))
for i, o := range objects {
// https://docs.openstack.org/swift/latest/api/pseudo-hierarchical-folders-directories.html
if delimiter != "" && o.PseudoDirectory {
objs[i] = &obj{o.SubDir, 0, time.Unix(0, 0), true, "", ""}
} else {
objs[i] = &obj{o.Name, o.Bytes, o.LastModified, strings.HasSuffix(o.Name, "/"), "", ""}
}
}
return generateListResult(objs, limit)
}
View on GitHub (pinned to c9a67b23e8)
Solutions
- Use a single-character delimiter (typically '/') for hierarchical listing
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkg/object/swift.go:90 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06).
Data as JSON: /api/errors/8f13bcd025669833.
Report an issue: GitHub.