juicedata/juicefs · error
creating a bucket that already exists returns an error
Error message
creating a bucket that already exists returns an error
What it means
Returned by objbench's 'create a bucket' test when calling Create on an already-existing bucket does not return an error. The benchmark expects POSIX-style EEXIST semantics, so a backend that silently tolerates re-creation fails this compatibility check.
Source
Thrown at cmd/objbench.go:772
defer blob.Delete(ctx, key) //nolint:errcheck
return warning(fn())
})
}
runCase("create a bucket", func(blob object.ObjectStorage) error {
created := true
if err := blob.Put(ctx, key, bytes.NewReader([]byte("1"))); err != nil {
created = false
}
defer blob.Delete(ctx, key) //nolint:errcheck
if !created {
if err := blob.Create(ctx); err != nil {
return fmt.Errorf("can't create bucket: %s", err)
}
}
if err := blob.Create(ctx); err != nil {
return fmt.Errorf("creating a bucket that already exists returns an error")
}
return nil
})
runCase("put an object", func(blob object.ObjectStorage) error {
br := []byte("hello")
if err := blob.Put(ctx, key, bytes.NewReader(br)); err != nil {
return fmt.Errorf("put object failed: %s", err)
}
defer blob.Delete(ctx, key) //nolint:errcheck
return nil
})
runCase("get an object", func(blob object.ObjectStorage) error {
br := []byte("hello")
if err := blob.Put(ctx, key, bytes.NewReader(br)); err != nil {
return fmt.Errorf("put object failed: %s", err)
}View on GitHub (pinned to c9a67b23e8)
Solutions
- Treat this as a backend behavior difference; note it in benchmark comparisons
- Use a fresh/non-existent bucket name for each run if strict semantics are required
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cmd/objbench.go:772 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/48d41480a5084297.
Report an issue: GitHub.