Skip to content

asyncio.base_events.BaseEventLoop._add_callback references TimerHandle but never uses them #101143

Closed

Description

@bdraco

Bug report

After 592ada9 it appears this function not longer cares about self._scheduled or TimerHandle but the docstring seems to imply otherwise

Your environment

  • CPython versions tested on: 3.12.0a4
  • Operating system and architecture: MacOS

I only noticed because it was unexpectedly more expensive

unexpectedly_more_expensive

I think its dead code and can be simplified to:

diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index cbabb43ae0..070ea1044d 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -1857,11 +1857,9 @@ def call_exception_handler(self, context):
                                  exc_info=True)
 
     def _add_callback(self, handle):
-        """Add a Handle to _scheduled (TimerHandle) or _ready."""
+        """Add a Handle to _ready."""
         assert isinstance(handle, events.Handle), 'A Handle is required here'
-        if handle._cancelled:
-            return
-        assert not isinstance(handle, events.TimerHandle)
+        if not handle._cancelled:
             self._ready.append(handle)
 
     def _add_callback_signalsafe(self, handle):

Linked PRs

Activity

  1. added
    type-bugAn unexpected behavior, bug, or error
    on Jan 19, 2023
  2. gvanrossum commented on Jan 19, 2023

    @gvanrossum
    Member

    You might as well submit a PR, we can review then.

  3. bdraco commented on Jan 20, 2023

    @bdraco
    ContributorAuthor

    Pushed that suggested change to a few more production machines to be sure. Still kinda surprising how much run time it has but I guess thats what happens when you call it ~10000 time a minute.

    mod

    Will send a PR soon

  4. bdraco commented on Jan 20, 2023

    @bdraco
    ContributorAuthor

    Updated callgrind after #101197 (comment) which brings it down to the 21st most run time from 6th on my test Home Assistant instance.

    post_review

  5. moved this from Todo to Done in asyncioon Jan 21, 2023
  6. added a commit that references this issue on Jan 21, 2023
  7. added 4 commits that reference this issue on Jan 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    • Status
      Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions