-
-
Notifications
You must be signed in to change notification settings - Fork 31.9k
gh-124872: Replace enter/exit events with "switched" #125532
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
Conversation
With that PR, admin@Admins-MacBook-Air ~/p/cpython (revert-of-revert)> ./python.exe -m test -R 3:3 test_capi
Using random seed: 992095454
0:00:00 load avg: 26.10 Run 1 test sequentially in a single process
0:00:00 load avg: 26.10 [1/1] test_capi
beginning 6 repetitions. Showing number of leaks (. for 0 or less, X for 10 or more)
123:456
XX. ...
test_capi passed in 43.3 sec
== Tests result: SUCCESS ==
1 test OK.
Total duration: 43.4 sec
Total tests: run=985 skipped=67
Total test files: run=1/1
Result: SUCCESS |
I suggest to wait after Python 3.14.0 alpha1 release to retry this change. |
Why? We can debug and fix the ref leak. @rhansen Please build CPython with |
me:
It's just that there are many broken buildbots, I think that this change can wait for 3.14.0a2. |
FYI, I ran the test suite in hunt refleaks mode locally and it succeeded: == Tests result: SUCCESS ==
25 tests skipped:
test.test_asyncio.test_windows_events
test.test_asyncio.test_windows_utils test.test_gdb.test_backtrace
test.test_gdb.test_cfunction test.test_gdb.test_cfunction_full
test.test_gdb.test_misc test.test_gdb.test_pretty_print
test.test_multiprocessing_fork.test_manager
test.test_multiprocessing_fork.test_misc
test.test_multiprocessing_fork.test_processes
test.test_multiprocessing_fork.test_threads test_android
test_dbm_gnu test_devpoll test_epoll test_free_threading
test_launcher test_msvcrt test_perf_profiler test_perfmaps
test_startfile test_winapi test_winconsoleio test_winreg test_wmi
11 tests skipped (resource denied):
test_curses test_peg_generator test_pyrepl test_smtpnet
test_socketserver test_tkinter test_ttk test_urllib2net
test_urllibnet test_winsound test_zipfile64
442 tests OK.
Total duration: 20 min 5 sec
Total tests: run=44,347 skipped=2,182
Total test files: run=467/478 skipped=25 resource_denied=11
Result: SUCCESS |
@Eclips4 thanks for fixing the leak!
I sympathize, really sorry about breaking them and causing pain :/ Can we try landing this PR since it appears it should solve the issue? I'm afraid if we wait on this for a month to get it merged it will go stale and we just forget. I'd try again and if it fails we wait? If however you really don't want to do it, then fine. |
Since we're about to release a1 tonight, I'd wait with landing this until right after a1. We won't forget about it. |
Actually, @hugovk should make the call. |
Yeah, same call, thanks :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apologies for the breakage, and thank you for debugging!
Is a blurb required now that there's an API change between v3.14.0a1 and v3.14.0a2?
Also, would you mind fixing up the commit message, authorship info, etc. on the first commit:
git -c sequence.editor='sed -i -e "1s/^pick/edit/"' rebase -i main &&
git commit --amend -C 843d28f59d2 &&
git rebase --continue
Oh I was reading the schedule wrong. I didn't realize Victor wants to delay it just one day, essentially, I thought we were talking one month to merge this. Absolutely can wait a few days. |
Thanks, a1 is now out, merge whenever you're ready. |
Sorry about that! I definitely will do it. |
…4776) Users want to know when the current context switches to a different context object. Right now this happens when and only when a context is entered or exited, so the enter and exit events are synonymous with "switched". However, if the changes proposed for pythongh-99633 are implemented, the current context will also switch for reasons other than context enter or exit. Since users actually care about context switches and not enter or exit, replace the enter and exit events with a single switched event. The former exit event was emitted just before exiting the context. The new switched event is emitted after the context is exited to match the semantics users expect of an event with a past-tense name. If users need the ability to clean up before the switch takes effect, another event type can be added in the future. It is not added here because YAGNI. I skipped 0 in the enum as a matter of practice. Skipping 0 makes it easier to troubleshoot when code forgets to set zeroed memory, and it aligns with best practices for other tools (e.g., https://protobuf.dev/programming-guides/dos-donts/#unspecified-enum).
Co-authored-by: Victor Stinner <vstinner@python.org>
Co-authored-by: Richard Hansen <rhansen@rhansen.org>
436edd2
to
049834c
Compare
@rhansen it seems I have done it. If you agree, I will merge it. (I'm actually do not understand why for |
GitHub is correct when saying:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Should this get tested with the refleak buildbots? |
I don't think so. I tested test_capi manually, and @Eclips4 ran the whole test suite with |
…5532) Users want to know when the current context switches to a different context object. Right now this happens when and only when a context is entered or exited, so the enter and exit events are synonymous with "switched". However, if the changes proposed for pythongh-99633 are implemented, the current context will also switch for reasons other than context enter or exit. Since users actually care about context switches and not enter or exit, replace the enter and exit events with a single switched event. The former exit event was emitted just before exiting the context. The new switched event is emitted after the context is exited to match the semantics users expect of an event with a past-tense name. If users need the ability to clean up before the switch takes effect, another event type can be added in the future. It is not added here because YAGNI. I skipped 0 in the enum as a matter of practice. Skipping 0 makes it easier to troubleshoot when code forgets to set zeroed memory, and it aligns with best practices for other tools (e.g., https://protobuf.dev/programming-guides/dos-donts/#unspecified-enum). Co-authored-by: Richard Hansen <rhansen@rhansen.org> Co-authored-by: Victor Stinner <vstinner@python.org>
test_capi
leaks references #125512📚 Documentation preview 📚: https://cpython-previews--125532.org.readthedocs.build/