mirror of
https://github.com/fsouza/fake-gcs-server.git
synced 2026-04-25 13:45:52 +03:00
[GH-ISSUE #1202] Issue with PublicHost and Golang client #173
Labels
No labels
bug
compatibility-issue
docker
documentation
enhancement
help wanted
needs information
pull-request
question
stale
unfortunate
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/fake-gcs-server#173
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ivanovaleksey on GitHub (Jun 7, 2023).
Original GitHub issue: https://github.com/fsouza/fake-gcs-server/issues/1202
Hey!
Thank you for the great GCS emulator!
I am using this server as a local storage while working with DuckDB.
It has a feature working with files in S3 storages directly https://duckdb.org/docs/guides/import/s3_import
To use it I need to configure endpoint
SET s3_endpoint='some-host';As far as I understand that should be the same host that is specified in
public-host.I just picked up value for public host from source code comment, i.e.
storage.gcs.127.0.0.1.nip.io:4443It works fine when I run
fake-gcs-serveras a binary but fails when I run it within Golang unit-test.I took this example https://github.com/fsouza/fake-gcs-server/blob/main/fakestorage/example_test.go#LL41C13-L41C13 and added
PublicHost: "storage.gcs.127.0.0.1.nip.io:8081"and then gotobject not founderror.After some debugging I realized that the issue is probably here https://github.com/fsouza/fake-gcs-server/blob/main/fakestorage/server.go#L418
r.Hostwasstorage.googleapis.comwhiles.publicHostwasstorage.gcs.127.0.0.1.nip.io:8081.I got it working by initialing GCS client manually
and specifying
Scheme = "http"I wonder if it's intended behaviour? My impression was that
(*Server).Client()method should have handled this automatically as it was stated in the commentThis issue might be related to #982
@fsouza commented on GitHub (Jun 7, 2023):
Hmm, that's interesting.
(*Server).Client()should definitely handle this correctly. Do you have an example of a unit test that fails with that error? We should add those tests to fake-gcs-server itself and fix the created client to make sure it either sets all headers or accepts any requests.@ivanovaleksey commented on GitHub (Jun 7, 2023):
@fsouza thank you for the reply!
Please see my commit here
I am not sure what is happening but in
ExampleServer_with_public_hostfunctionpanicdoesn't really work. If you debug it you will see thaterr != nilbut panic just handle it silently.I changed it to
log.Fataland also added another "proper" test. Therepanicactually works as expected.Weird thing is that if I copy
ExampleServer_with_public_hostto my actual project it fails. Maybe something is wrong with my environment? Can't even imagine what it could be.Could you please run it yourself to see if it works/fails?
P.S.
I guess it has something do to with it being example. This doesn't panic
Still don't understand why it fails in some files and not in the others.
If I put the code above to
internal/backend/backend_test.goit fails but if I put it any*_test.gofile underfakestoragedirectory it just runs silently@jboyens commented on GitHub (Jul 21, 2023):
I had a very very similar issue with Google's Go client. I don't know that it's the same issue, but this stumped me for longer than I'll care to admit.
By default, the Go client code will use the XML range reader rather than the JSON range reader (see
github.com/googleapis/google-cloud-go@cf3452eba7/storage/http_client.go (L780-L790)).If I, on the official client, say
storage.WithJSONReads()as an option alongsideoption.WithEndpoint()everything is fine and I receive no404.@bliuchak commented on GitHub (Jul 27, 2023):
@jboyens you've saved me a lot of time!
storage.WithJSONReads()works like a charm.@pocockn commented on GitHub (Jan 20, 2024):
Thanks @jboyens !
@glenn-smith-0 commented on GitHub (Apr 9, 2025):
Thanks @jboyens, this has fixed issue we were having https://github.com/fsouza/fake-gcs-server/issues/1952