[GH-ISSUE #214] Deleting a bucket fails #39

Closed
opened 2026-03-03 12:07:40 +03:00 by kerem · 2 comments
Owner

Originally created by @someone1 on GitHub (Apr 16, 2020).
Original GitHub issue: https://github.com/fsouza/fake-gcs-server/issues/214

First off, amazing project! Much needed.

When I try and delete a bucket to cleanup after my tests, it fails:

	gcsTestBucketName := "test_bucket"
	transCfg := &http.Transport{
		// nolint:gosec // Purposely connecting to a local self-signed certificate endpoint
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // ignore expired SSL certificates
	}
	httpClient := &http.Client{Transport: transCfg}
	client, err := storage.NewClient(ctx, option.WithEndpoint(os.Getenv("GCS_FAKE_SERVER")+"/storage/v1/"), option.WithHTTPClient(httpClient))
	if err != nil {
		t.Fatal(err)
	}

	if err = client.Bucket(gcsTestBucketName).Create(ctx, "test-project", nil); err != nil {
		t.Fatalf("could not create bucket; %v", err)
	}

	defer func() {
		if err = client.Bucket(gcsTestBucketName).Delete(ctx); err != nil {
			t.Errorf("could not delete bucket: %v", err)
		}
	}()

I end up getting a panic:

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0xc1854e]

goroutine 8 [running]:
testing.tRunner.func1.1(0xd66900, 0x1725600)
        /usr/lib/go/src/testing/testing.go:940 +0x2f5
testing.tRunner.func1(0xc0003ac900)
        /usr/lib/go/src/testing/testing.go:943 +0x3f9
panic(0xd66900, 0x1725600)
        /usr/lib/go/src/runtime/panic.go:969 +0x166
cloud.google.com/go/storage.(*BucketHandle).newDeleteCall(0xc000017cb8, 0xc000079d40, 0xeb5bc4, 0x29)
        /home/user/go/pkg/mod/cloud.google.com/go/storage@v1.6.0/bucket.go:107 +0x3e
cloud.google.com/go/storage.(*BucketHandle).Delete(0xc000017cb8, 0x10f9c40, 0xc000079d40, 0x0, 0x0)
        /home/user/go/pkg/mod/cloud.google.com/go/storage@v1.6.0/bucket.go:99 +0xed
// ...
Originally created by @someone1 on GitHub (Apr 16, 2020). Original GitHub issue: https://github.com/fsouza/fake-gcs-server/issues/214 First off, amazing project! Much needed. When I try and delete a bucket to cleanup after my tests, it fails: ```go gcsTestBucketName := "test_bucket" transCfg := &http.Transport{ // nolint:gosec // Purposely connecting to a local self-signed certificate endpoint TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // ignore expired SSL certificates } httpClient := &http.Client{Transport: transCfg} client, err := storage.NewClient(ctx, option.WithEndpoint(os.Getenv("GCS_FAKE_SERVER")+"/storage/v1/"), option.WithHTTPClient(httpClient)) if err != nil { t.Fatal(err) } if err = client.Bucket(gcsTestBucketName).Create(ctx, "test-project", nil); err != nil { t.Fatalf("could not create bucket; %v", err) } defer func() { if err = client.Bucket(gcsTestBucketName).Delete(ctx); err != nil { t.Errorf("could not delete bucket: %v", err) } }() ``` I end up getting a panic: ``` panic: runtime error: invalid memory address or nil pointer dereference [recovered] panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0xc1854e] goroutine 8 [running]: testing.tRunner.func1.1(0xd66900, 0x1725600) /usr/lib/go/src/testing/testing.go:940 +0x2f5 testing.tRunner.func1(0xc0003ac900) /usr/lib/go/src/testing/testing.go:943 +0x3f9 panic(0xd66900, 0x1725600) /usr/lib/go/src/runtime/panic.go:969 +0x166 cloud.google.com/go/storage.(*BucketHandle).newDeleteCall(0xc000017cb8, 0xc000079d40, 0xeb5bc4, 0x29) /home/user/go/pkg/mod/cloud.google.com/go/storage@v1.6.0/bucket.go:107 +0x3e cloud.google.com/go/storage.(*BucketHandle).Delete(0xc000017cb8, 0x10f9c40, 0xc000079d40, 0x0, 0x0) /home/user/go/pkg/mod/cloud.google.com/go/storage@v1.6.0/bucket.go:99 +0xed // ... ```
kerem 2026-03-03 12:07:40 +03:00
Author
Owner

@fsouza commented on GitHub (Apr 20, 2020):

Indeed the server doesn't currently support deleting buckets. I'm surprised the official SDK panics though 🤔

I wasn't able to reproduce locally:


func deleteBucket(client *storage.Client, bucketName string) error {
	return client.Bucket(bucketName).Delete(context.TODO())
}

Returns something like:

googleapi: got HTTP response code 405 with body:

Either way, will keep this issue open for tracking the support for bucket deletion.

<!-- gh-comment-id:616813728 --> @fsouza commented on GitHub (Apr 20, 2020): Indeed the server doesn't currently support deleting buckets. I'm surprised the official SDK panics though :thinking: I wasn't able to reproduce locally: ```go func deleteBucket(client *storage.Client, bucketName string) error { return client.Bucket(bucketName).Delete(context.TODO()) } ``` Returns something like: ``` googleapi: got HTTP response code 405 with body: ``` Either way, will keep this issue open for tracking the support for bucket deletion.
Author
Owner

@joerodriguez commented on GitHub (Apr 19, 2021):

Hey y'all, there's a PR here for deleting buckets: https://github.com/fsouza/fake-gcs-server/pull/481

<!-- gh-comment-id:822727828 --> @joerodriguez commented on GitHub (Apr 19, 2021): Hey y'all, there's a PR here for deleting buckets: https://github.com/fsouza/fake-gcs-server/pull/481
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/fake-gcs-server#39
No description provided.