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

[PR #6028/3eea7b8d backport][3.8] Modify _drain_helper() to handle parallel calls without race-condition #6146

Conversation

patchback[bot]
Copy link
Contributor

@patchback patchback bot commented Oct 27, 2021

This is a backport of PR #6028 as merged into master (3eea7b8).

What do these changes do?

These changes fix a bug/race-condition on the BaseProtocol's drain-waiter.

Are there changes in behavior for the user?

There are no API or behavioral changes. This should exclusively handle the case of the race-condition when multiple coroutines produce messages to a websocket for example.

Related issue number

This fix is aimed at the #2934 issue directly.

Checklist

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes - Not applicable AFAIK
  • 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."

#6028)

* Modify _drain_helper() to handle parallel calls of _send_frame() without race-condition.

* Update CHANGES/2934.bugfix

* Update 2934.bugfix

Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
(cherry picked from commit 3eea7b8)
@codecov
Copy link

codecov bot commented Oct 27, 2021

Codecov Report

Merging #6146 (3eea7b8) into 3.8 (66e281f) will decrease coverage by 4.21%.
The diff coverage is 90.47%.

❗ Current head 3eea7b8 differs from pull request most recent head 0d1b05d. Consider uploading reports for the commit 0d1b05d to get more accurate results
Impacted file tree graph

@@            Coverage Diff             @@
##              3.8    #6146      +/-   ##
==========================================
- Coverage   97.52%   93.31%   -4.22%     
==========================================
  Files          44      102      +58     
  Lines        8865    30178   +21313     
  Branches     1429     2701    +1272     
==========================================
+ Hits         8646    28160   +19514     
- Misses        103     1841    +1738     
- Partials      116      177      +61     
Flag Coverage Δ
unit 93.24% <90.28%> (-4.11%) ⬇️

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

Impacted Files Coverage Δ
aiohttp/web_fileresponse.py 97.93% <ø> (-2.07%) ⬇️
aiohttp/web_log.py 100.00% <ø> (ø)
aiohttp/web_middlewares.py 100.00% <ø> (ø)
aiohttp/web_protocol.py 86.41% <ø> (-4.20%) ⬇️
aiohttp/web_request.py 95.91% <ø> (-1.65%) ⬇️
aiohttp/web_response.py 98.41% <ø> (+0.14%) ⬆️
aiohttp/web_routedef.py 98.11% <ø> (+0.01%) ⬆️
aiohttp/web_runner.py 92.34% <ø> (-5.29%) ⬇️
aiohttp/web_server.py 94.28% <ø> (-5.72%) ⬇️
aiohttp/web_urldispatcher.py 97.54% <ø> (-0.06%) ⬇️
... and 135 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9c77083...0d1b05d. Read the comment docs.

@asvetlov asvetlov merged commit 5ed1b0f into 3.8 Oct 27, 2021
@asvetlov asvetlov deleted the patchback/backports/3.8/3eea7b8dbd90b7ebd4f9f0572323dbee8c13611c/pr-6028 branch October 27, 2021 16:41
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.

2 participants