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

Updated context to be used for HTTP request + refactoring #9291

Open
wants to merge 6 commits into
base: 3.0-dev
Choose a base branch
from

Conversation

PawelWMS
Copy link
Contributor

@PawelWMS PawelWMS commented Jun 4, 2024

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

  • The toolchain has been rebuilt successfully (or no changes were made to it)
  • The toolchain/worker package manifests are up-to-date
  • Any updated packages successfully build (or no packages were changed)
  • Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
  • Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
  • All package sources are available
  • cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
  • LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
  • All source files have up-to-date hashes in the *.signatures.json files
  • sudo make go-tidy-all and sudo make go-test-coverage pass
  • Documentation has been updated to match any changes to the build system
  • Ready to merge

Summary
  • Expanded the use of context to pass it to our HTTP requests.
  • Added a context nil check in azureblobstorage.go.
  • Re-named cancelCtx to closeCtx to better reflect the purpose of some of our defer calls.
  • 1 loop refactoring to use the for element := range someChannel loops.
Does this affect the toolchain?

No.

Associated issues
Test Methodology

@PawelWMS PawelWMS requested a review from a team as a code owner June 4, 2024 00:03
@PawelWMS PawelWMS marked this pull request as draft June 4, 2024 00:03
Copy link
Contributor

@dmcilvaney dmcilvaney left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While it seems slightly pointless, everywhere I look says to always defer cancelFunc(). By its nature it should always be safe to do so. In fact I believe go vet will actually flag any un-deferred cancel functions.

I think the best argument is that maybe today its ok, but what about in 6 months? A developer will see a context, and assume that we followed best practices. They will add a go routine that only exits on the cancel signal, and now we have a memory leak.

tldr, defer cancelFunc() is a really easy and safe way to ensure that a context is cleaned up no mater what code flow we end up following.

@@ -139,9 +139,7 @@ func TestDownloadFile(t *testing.T) {
dstDir := t.TempDir()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#9307 (comment) We should add a test here to check early cancel propagates correctly.

@PawelWMS PawelWMS marked this pull request as ready for review June 6, 2024 23:39
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.

None yet

2 participants