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

  1. Treat this as a backend behavior difference; note it in benchmark comparisons
  2. 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.