juicedata/juicefs · error

no volume provided

Error message

no volume provided

What it means

Splitting the endpoint URI's path yielded no components beyond the root, meaning the gluster:// URL names no volume. GlusterFS requires a volume name in the path (gluster://host/volume); this validation guard rejects endpoints that only specify hosts.

Source

Thrown at pkg/object/gluster.go:284

func (g *gluster) Chmod(path string, mode os.FileMode) error {
	return g.vol().Chmod(path, mode)
}

func (g *gluster) Chown(path string, owner, group string) error {
	return notSupported
}

func newGluster(endpoint, ak, sk, token string) (ObjectStorage, error) {
	if !strings.Contains(endpoint, "://") {
		endpoint = fmt.Sprintf("gluster://%s", endpoint)
	}
	uri, err := url.ParseRequestURI(endpoint)
	if err != nil {
		return nil, fmt.Errorf("Invalid endpoint %s: %s", endpoint, err)
	}
	ps := strings.Split(uri.Path, "/")
	if len(ps) == 1 {
		return nil, fmt.Errorf("no volume provided")
	}
	name := ps[1]
	// multiple clients for possible performance improvement
	var size int
	if ssize := os.Getenv("JFS_NUM_GLUSTER_CLIENTS"); ssize != "" {
		size, _ = strconv.Atoi(ssize)
		if size > 8 {
			size = 8
		}
	}
	if size < 1 {
		size = 1
	}
	// logging
	level := gfapi.LogInfo
	if slevel := os.Getenv("JFS_GLUSTER_LOG_LEVEL"); slevel != "" {
		switch strings.ToUpper(slevel) {
		case "ERROR":

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Append the volume name to the endpoint, e.g. gluster://host/myvol
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/object/gluster.go:284 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/dcb21d63251dc0ba. Report an issue: GitHub.