Uh oh!
There was an error while loading. Please reload this page.
gh-120317: Lock around global state in the tokenize module - #120318
Conversation
Uh oh!
There was an error while loading. Please reload this page.
78df829 to
abf568aCompareFidget-Spinner
commented
Jun 10, 2024
This LGTM. Can you add the reproducer to |
lysnikolaou
commented
Jun 10, 2024
@Fidget-Spinner I added more locking around global state. Reviewing each commit seprately might make it easier. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Fidget-Spinner
left a comment
There was a problem hiding this comment.
This looks like a refactor, so good so far.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
lysnikolaou
commented
Jun 10, 2024
Feedback addressed. @Fidget-Spinner I used |
Fidget-Spinner
left a comment
There was a problem hiding this comment.
LGTM. Feel free to ignore the following comments if this part of the tokenizer is not perf sensitive.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
lysnikolaou
commented
Jun 10, 2024
All feedback addressed. Thanks a lot for the reviews and the help @Fidget-Spinner and @erlend-aasland! |
Uh oh!
There was an error while loading. Please reload this page.
| @threading_helper.requires_working_threading() | ||
| class TestTokenize(unittest.TestCase): |
There was a problem hiding this comment.
Tested this locally: it crashes spectacularly without the fix :)
| @@ -194,7 +252,13 @@ tokenizeriter_next(tokenizeriterobject *it) | |||
| } | |||
| if (it->done || type == ERRORTOKEN) { | |||
There was a problem hiding this comment.
Don't we need to protect the read? Otherwise we may get weird partial reads no?
pablogsal
commented
Jun 11, 2024
Actually, one question here: shouldn't we be protecting all reads of the |
pablogsal
commented
Jun 11, 2024
For example, this read is not protected, no?: |
20c7cb2 to
1c51dafCompareCo-authored-by: Pablo Galindo <pablogsal@gmail.com>
1c51daf to
ca466faComparelysnikolaou
commented
Jun 11, 2024
After some offline discussion with @pablogsal, we decided it makes more sense to just lock around all of |
Uh oh!
There was an error while loading. Please reload this page.
| try: | ||
| r = next(it) | ||
| tokens.append(tokenize.TokenInfo._make(r)) | ||
| time.sleep(1) |
There was a problem hiding this comment.
Can we make this test faster? It's going to run on every CI job. I think we should aim for 0.1 seconds or less for these sorts of tests. (It's currently ~3 seconds).
There was a problem hiding this comment.
Changed the amount of time each thread sleeps to 0.03 secs, which means that the whole test now takes about 0.1 seconds. Also verified that the test still fails without the fix and succeeds with it.
@pablogsal Can you do a final review here when you have some spare cycles? |
pablogsal
left a comment
There was a problem hiding this comment.
Reviewed the PR and the comments and it LGTM
I also ran the tests locally in free threaded mode to confirm
Thanks @lysnikolaou for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13. |
…honGH-120318) (cherry picked from commit 8549559) Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com> Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
GH-121841 is a backport of this pull request to the 3.13 branch. |
…hon#120318) Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
Uh oh!
There was an error while loading. Please reload this page.