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

Fix #7306 - Set ClientWebSocketResponse.close_code correctly in concurrent closing scenario #7680

Merged

Conversation

ttsia
Copy link
Contributor

@ttsia ttsia commented Oct 9, 2023

What do these changes do?

Fixes the issue when If one asyncio task is waiting on receiving data and another asyncio task is closing the connection. The ClientWebSocketResponse.close_code will be None after connection closed.

Related issue number

Fixes #7306

Checklist

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes
  • If you provide code modification, please add yourself to CONTRIBUTORS.txt
    • The format is <Name> <Surname>.
    • Please keep alphabetical order, the file is sorted by names.
  • Add a new news fragment into the CHANGES folder
    • name it <issue_id>.<type> for example (588.bugfix)
    • if you don't have an issue_id change it to the pr id after creating the pr
    • ensure type is one of the following:
      • .feature: Signifying a new feature.
      • .bugfix: Signifying a bug fix.
      • .doc: Signifying a documentation improvement.
      • .removal: Signifying a deprecation or removal of public API.
      • .misc: A ticket has been closed, but it is not of interest to users.
    • Make sure to use full sentences with correct case and punctuation, for example: "Fix issue with non-ascii contents in doctest text files."

@ttsia ttsia requested a review from asvetlov as a code owner October 9, 2023 08:21
@psf-chronographer psf-chronographer bot added the bot:chronographer:provided There is a change note present in this PR label Oct 9, 2023
@Dreamsorcerer Dreamsorcerer added the backport-3.9 Trigger automatic backporting to the 3.9 release branch by Patchback robot label Oct 9, 2023
tests/test_client_ws_functional.py Dismissed Show dismissed Hide dismissed
@codecov
Copy link

codecov bot commented Oct 9, 2023

Codecov Report

Merging #7680 (d96d754) into master (3d60762) will decrease coverage by 0.01%.
Report is 2 commits behind head on master.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master    #7680      +/-   ##
==========================================
- Coverage   97.36%   97.36%   -0.01%     
==========================================
  Files         106      106              
  Lines       31630    31648      +18     
  Branches     3619     3620       +1     
==========================================
+ Hits        30797    30813      +16     
- Misses        630      632       +2     
  Partials      203      203              
Flag Coverage Δ
CI-GHA 97.28% <100.00%> (-0.01%) ⬇️
OS-Linux 96.95% <100.00%> (-0.01%) ⬇️
OS-Windows 95.42% <100.00%> (-0.01%) ⬇️
OS-macOS 96.61% <100.00%> (-0.01%) ⬇️
Py-3.10.11 95.35% <100.00%> (-0.01%) ⬇️
Py-3.10.13 96.81% <100.00%> (-0.01%) ⬇️
Py-3.11.5 96.49% <100.00%> (-0.06%) ⬇️
Py-3.8.10 95.32% <100.00%> (-0.01%) ⬇️
Py-3.8.18 96.74% <100.00%> (-0.01%) ⬇️
Py-3.9.13 95.31% <100.00%> (-0.01%) ⬇️
Py-3.9.18 96.77% <100.00%> (-0.01%) ⬇️
Py-pypy7.3.11 96.26% <100.00%> (-0.01%) ⬇️
VM-macos 96.61% <100.00%> (-0.01%) ⬇️
VM-ubuntu 96.95% <100.00%> (-0.01%) ⬇️
VM-windows 95.42% <100.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Coverage Δ
aiohttp/client_ws.py 92.62% <100.00%> (+0.03%) ⬆️
tests/test_client_ws_functional.py 97.36% <100.00%> (-0.25%) ⬇️

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@Dreamsorcerer Dreamsorcerer merged commit 30850ba into aio-libs:master Oct 9, 2023
28 of 34 checks passed
@patchback
Copy link
Contributor

patchback bot commented Oct 9, 2023

Backport to 3.9: 💔 cherry-picking failed — conflicts found

❌ Failed to cleanly apply 30850ba on top of patchback/backports/3.9/30850babb43a8e28dd2df036776c62fd613d3d89/pr-7680

Backporting merged PR #7680 into master

  1. Ensure you have a local repo clone of your fork. Unless you cloned it
    from the upstream, this would be your origin remote.
  2. Make sure you have an upstream repo added as a remote too. In these
    instructions you'll refer to it by the name upstream. If you don't
    have it, here's how you can add it:
    $ git remote add upstream https://github.com/aio-libs/aiohttp.git
  3. Ensure you have the latest copy of upstream and prepare a branch
    that will hold the backported code:
    $ git fetch upstream
    $ git checkout -b patchback/backports/3.9/30850babb43a8e28dd2df036776c62fd613d3d89/pr-7680 upstream/3.9
  4. Now, cherry-pick PR Fix #7306 - Set ClientWebSocketResponse.close_code correctly in concurrent closing scenario #7680 contents into that branch:
    $ git cherry-pick -x 30850babb43a8e28dd2df036776c62fd613d3d89
    If it'll yell at you with something like fatal: Commit 30850babb43a8e28dd2df036776c62fd613d3d89 is a merge but no -m option was given., add -m 1 as follows instead:
    $ git cherry-pick -m1 -x 30850babb43a8e28dd2df036776c62fd613d3d89
  5. At this point, you'll probably encounter some merge conflicts. You must
    resolve them in to preserve the patch from PR Fix #7306 - Set ClientWebSocketResponse.close_code correctly in concurrent closing scenario #7680 as close to the
    original as possible.
  6. Push this branch to your fork on GitHub:
    $ git push origin patchback/backports/3.9/30850babb43a8e28dd2df036776c62fd613d3d89/pr-7680
  7. Create a PR, ensure that the CI is green. If it's not — update it so that
    the tests and any other checks pass. This is it!
    Now relax and wait for the maintainers to process your pull request
    when they have some cycles to do reviews. Don't worry — they'll tell you if
    any improvements are necessary when the time comes!

🤖 @patchback
I'm built with octomachinery and
my source is open — https://github.com/sanitizers/patchback-github-app.

@Dreamsorcerer
Copy link
Member

@ttsia Thanks for that. If you could create a backport with the above instructions, that'd be great.

ttsia added a commit to ttsia/aiohttp that referenced this pull request Oct 10, 2023
…in concurrent closing scenario (aio-libs#7680)

(cherry picked from commit 30850ba)
Dreamsorcerer pushed a commit that referenced this pull request Oct 11, 2023
…nse.close_code correctly in concu… (#7690)

This is a backport of PR #7680
as merged into master
(30850ba).

Fixes the issue when If one asyncio task is waiting on receiving data
and another asyncio task is closing the connection. The
ClientWebSocketResponse.close_code will be None after connection closed.
xiangxli pushed a commit to xiangxli/aiohttp that referenced this pull request Dec 4, 2023
…ntWebSocketResponse.close_code correctly in concu… (aio-libs#7690)

This is a backport of PR aio-libs#7680
as merged into master
(aio-libs@30850ba).

Fixes the issue when If one asyncio task is waiting on receiving data
and another asyncio task is closing the connection. The
ClientWebSocketResponse.close_code will be None after connection closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport-3.9 Trigger automatic backporting to the 3.9 release branch by Patchback robot bot:chronographer:provided There is a change note present in this PR
Projects
None yet
2 participants