Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blob: convert gocloud errors in Open() into appropriate fs errors #3443

Merged
merged 1 commit into from
Jun 13, 2024

Conversation

milescrabill
Copy link
Contributor

@milescrabill milescrabill commented Jun 4, 2024

Motivation:

  • http.ServeFileFS() uses errors.Is() to match on fs.ErrNotExist and fs.ErrPermission errors and return corresponding HTTP status codes.
  • gocloud currently returns fs.PathError which do not wrap the underlying fs errors, and which are not handled by http.ServeFileFS()'s error handling.
  • gocloud returning fs.PathErrors results in http.ServeFileFS() serving Internal Server Errors instead of Not Found or Permission Denied errors.

Fix:

  • wraps gocloud NotFound and PermissionDenied errors encountered in Open() around their io/fs counterparts
  • does not perform wrapping for other gocloud errors as they can either not occur or are ambiguous in this context

- wraps gocloud NotFound and PermissionDenied errors around their
  `io/fs` counterparts
- does not perform wrapping for other gocloud errors as they can either
  not occur or are ambiguous in this context
Copy link

google-cla bot commented Jun 4, 2024

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@achew22
Copy link

achew22 commented Jun 12, 2024

@peczenyj it seems you've had some luck getting things merged into this repo. Do you have any tips or tricks on how to get this one reviewed?

@vangent
Copy link
Contributor

vangent commented Jun 12, 2024

Please be patient.

@peczenyj
Copy link
Contributor

I had no idea, to be honest. I send the first pull request without any expectations based on my previous attempts to contribute to other google projects. Somehow this project is different, maybe it is more close to the open source community.

Is there any mailing list where you can expose your problem and mention that you have an awesome pull request for that?

If the maintainers do not react with the necessary speed, perhaps you should consider fork the project - if the license allow - and if your fork get some attention maybe it change things (like archive this repo and point yours as the replacement - why not?)

Sometimes I just start pull requests because code can be more direct than discussions. But not all maintainers like this approach, since I can suggest something undesirable or using the wrong design. It can end in frustration. But I try not to be sentimental.

When issues or pull requests have no feedback for some time it give the wrong impression that they just don’t care. But in fact they can be very busy.

In fact I saw, on this project, many small opportunities to contribute and things to improve, etc. I would love continue to send PRs but first I’d to see what I just did being released.

maybe one day I can have a more substantial role, the I can do more than just write random thoughts

@peczenyj
Copy link
Contributor

Or we can just ping @vangent and try to bribe him and with some beers

Copy link

codecov bot commented Jun 13, 2024

Codecov Report

Attention: Patch coverage is 0% with 6 lines in your changes missing coverage. Please review.

Project coverage is 73.37%. Comparing base (ba58ec7) to head (0e27588).

Files Patch % Lines
blob/blob_fs.go 0.00% 6 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3443      +/-   ##
==========================================
- Coverage   73.40%   73.37%   -0.03%     
==========================================
  Files         113      113              
  Lines       14948    14954       +6     
==========================================
  Hits        10973    10973              
- Misses       3201     3207       +6     
  Partials      774      774              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@vangent vangent merged commit afdaba3 into google:master Jun 13, 2024
5 checks passed
renovate bot added a commit to open-feature/flagd that referenced this pull request Sep 11, 2024
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [gocloud.dev](https://redirect.github.com/google/go-cloud) | `v0.37.0`
-> `v0.39.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/gocloud.dev/v0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/gocloud.dev/v0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/gocloud.dev/v0.37.0/v0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/gocloud.dev/v0.37.0/v0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>google/go-cloud (gocloud.dev)</summary>

###
[`v0.39.0`](https://redirect.github.com/google/go-cloud/releases/tag/v0.39.0)

[Compare
Source](https://redirect.github.com/google/go-cloud/compare/v0.38.0...v0.39.0)

#### BREAKING CHANGE (AWS only, V1 vs V2 SDK)

Context: AWS has [announced maintenance
mode](https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/)
for the Go V1 SDK.

Go CDK has changed the default SDK for URLs across all modules except
`docstore/awsdynamodb` to be V2 (previously you needed to add
`awssdk=v2` to the URL to get V2). Most URLs should continue to work,
but in some cases you may need to add `awssdk=v1` to force V1
explicitly.

Also, concrete type constructors (e.g., `OpenBucket`) for V1 (again,
except `docstore/awsdynamodb`) have been marked deprecated; please
migrate to using the V2 versions (e.g., `OpenBucketV2`).

Our tentative plan is to remove support for V1 in early 2025; please
[file a
bug](https://redirect.github.com/google/go-cloud/issues/new/choose) if
you have concerns about that.

#### What's Changed

- pubsub: Make batch request results independent by
[@&#8203;mitsos1os](https://redirect.github.com/mitsos1os) in
[google/go-cloud#3457
- docstore/all: Add support for boolean filter by
[@&#8203;ybourgery](https://redirect.github.com/ybourgery) in
[google/go-cloud#3464
- aws/all: Mark V1 constructors deprecated. by
[@&#8203;vangent](https://redirect.github.com/vangent) in
[google/go-cloud#3466
- aws/all: Change the default for AWS URLs from V1 to V2. by
[@&#8203;vangent](https://redirect.github.com/vangent) in
[google/go-cloud#3465
- all: update to go version 1.23 by
[@&#8203;vangent](https://redirect.github.com/vangent) in
[google/go-cloud#3467

#### New Contributors

- [@&#8203;mitsos1os](https://redirect.github.com/mitsos1os) made their
first contribution in
[google/go-cloud#3457
- [@&#8203;dependabot](https://redirect.github.com/dependabot) made
their first contribution in
[google/go-cloud#3448

**Full Changelog**:
google/go-cloud@v0.38.0...v0.39.0

###
[`v0.38.0`](https://redirect.github.com/google/go-cloud/releases/tag/v0.38.0)

[Compare
Source](https://redirect.github.com/google/go-cloud/compare/v0.37.0...v0.38.0)

**blob**

- **all**: Fix panics if reader recreation fails after Seek by
[@&#8203;vangent](https://redirect.github.com/vangent) in
[google/go-cloud#3425
- **all**: Convert errors in `Open()` into appropriate fs errors by
[@&#8203;milescrabill](https://redirect.github.com/milescrabill) in
[google/go-cloud#3443
- **s3blob**: Fix Copy to work with keys that need escaping by
[@&#8203;vangent](https://redirect.github.com/vangent) in
[google/go-cloud#3403
- **azureblob**: Do not panic if Content-Length and Content-Range are
missing by [@&#8203;chancez](https://redirect.github.com/chancez) in
[google/go-cloud#3445
- **fileblob**: Allow customization of the FileMode by
[@&#8203;vangent](https://redirect.github.com/vangent) in
[google/go-cloud#3426

**pubsub**

- **awssnssqs**: Add support for setting FIFO message metadata by
[@&#8203;bartventer](https://redirect.github.com/bartventer) in
[google/go-cloud#3435
- **kafkapubsub**: Configuring key_name when OpenTopicURL by
[@&#8203;ssetin](https://redirect.github.com/ssetin) in
[google/go-cloud#3404
- **rabbitpubsub**: Add query string set the qos prefetch count by
[@&#8203;peczenyj](https://redirect.github.com/peczenyj) in
[google/go-cloud#3431
- **rabbitpubsub**: Add query string to set the routing key from
metadata by [@&#8203;peczenyj](https://redirect.github.com/peczenyj) in
[google/go-cloud#3433
- **rabbitpubsub**: Wrap pubsub rabbitmq errors by
[@&#8203;peczenyj](https://redirect.github.com/peczenyj) in
[google/go-cloud#3437

**docstore**

- **all**: Fix offset handling and extend test coverage by
[@&#8203;bartventer](https://redirect.github.com/bartventer) in
[google/go-cloud#3409
- **awsdynamodb**: Ensure Next returns EOF when no more items by
[@&#8203;bartventer](https://redirect.github.com/bartventer) in
[google/go-cloud#3406
- **mongodocstore**: Update Mongo dialer when MONGO_SERVER_URL rotates
by [@&#8203;concaf](https://redirect.github.com/concaf) in
[google/go-cloud#3429

#### New Contributors

- [@&#8203;ssetin](https://redirect.github.com/ssetin) made their first
contribution in
[google/go-cloud#3404
- [@&#8203;concaf](https://redirect.github.com/concaf) made their first
contribution in
[google/go-cloud#3429
- [@&#8203;peczenyj](https://redirect.github.com/peczenyj) made their
first contribution in
[google/go-cloud#3431
- [@&#8203;chancez](https://redirect.github.com/chancez) made their
first contribution in
[google/go-cloud#3445
- [@&#8203;milescrabill](https://redirect.github.com/milescrabill) made
their first contribution in
[google/go-cloud#3443
- [@&#8203;samlaf](https://redirect.github.com/samlaf) made their first
contribution in
[google/go-cloud#3450

**Full Changelog**:
google/go-cloud@v0.37.0...v0.38.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-feature/flagd).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC43NC4xIiwidXBkYXRlZEluVmVyIjoiMzguNzQuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants