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/azureblob: Do not panic if Content-Length and Content-Range are missing #3445

Merged
merged 1 commit into from
Jun 13, 2024

Conversation

chancez
Copy link
Contributor

@chancez chancez commented Jun 12, 2024

I found that when we're downloading an a gzipped object with Content-Encoding: gzip, AZB is transparently sending back an uncompressed object rather than the gzipped object, and when this happens, I also discovered that go-cloud fails and panics because the Content-Length and the Content-Range fields are not set in this situation.

To gracefully handle this, check if the ContentLength field is nil before using it, and return 0 if both ContentRange and ContentLength are missing. This unfortunately does mean Size() may return 0 in some cases, but I don't see a good way to fix that without a bigger change in design. With this patch, I can confirm our issue is resolved.

Unfortunately, I did not see a good reference for how I could write a unit test for this. It seems existing conformance tests rely on a live bucket, and there's no unit tests that mock the underlying response or server for any of the existing drivers that I could reference either. If you have a suggestion for testing, let me know, but currently no new tests are added as part of this PR.

blob/azureblob/azureblob.go Outdated Show resolved Hide resolved
…missing

Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
@chancez chancez force-pushed the pr/chancez/azure_blob_panic branch from cc3250a to 8799b3b Compare June 13, 2024 15:15
Copy link

codecov bot commented Jun 13, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 73.43%. Comparing base (ba58ec7) to head (8799b3b).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3445      +/-   ##
==========================================
+ Coverage   73.40%   73.43%   +0.02%     
==========================================
  Files         113      113              
  Lines       14948    14950       +2     
==========================================
+ Hits        10973    10978       +5     
+ Misses       3201     3198       -3     
  Partials      774      774              

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

@vangent vangent merged commit e0142cf into google:master Jun 13, 2024
5 checks passed
@chancez chancez deleted the pr/chancez/azure_blob_panic branch June 13, 2024 17:07
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.

3 participants