Skip to content

storage: RawPath weird behaviour when retrieving bucket's blob  #10911

@GuyAfik

Description

@GuyAfik

Client

Storage

Environment

Linux

 % go version
go version go1.22.0 darwin/arm64

Code and Dependencies

r, err = s.bucketGCP.NewReader(ctx, storagePath, nil)

Problem

We have a large server code base that reads storage content from GCP. The structure of it is the following:

/name1-name2-name3/./folderA/folderB/FolderC/FolderD/some-file.zip

To read the object we use the storage module:

ctx := context.Background()
r, err = s.bucketGCP.NewReader(ctx, storagePath, nil)

At the moment we use old version (1.30.1)
We have tried to upgrade to google storage 1.36.0 and since then our storage objects cannot be found anymore. (in 1.30.1 it works just fine)

The error i am getting is:

blob (key "folderA/folderB/FolderC/FolderD/some-file.zip") (code=NotFound): storage: object doesn't exist

From my investigation its related to the RawPath added when doing http request (in version 1.30.1 - the RawPath isn't used):
https://github.com/googleapis/google-cloud-go/blob/main/storage/http_client.go#L839

If I remove it manually then our storage folders are found just fine. It might be related to URL escaping.

Assistance would be appreciated to whether its related to URL escaping which is done properly or anything else

Expected behavior

Request should be successful and storage zip should be found

Additional context

e.g. Started when upgrading to v1.36.0.

Metadata

Metadata

Assignees

Labels

api: storageIssues related to the Cloud Storage API.type: questionRequest for information or clarification. Not an issue.

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions