phpdoc-parser
phpdoc-parser copied to clipboard
Get rid of sleep pauses in process
I tried several times and cannot trace back to technical reasons for sleep( 3 ) every ten items.
Can someone explain what exactly it is doing? Farthest I got @rmccue said @paulgibbs (?) added it to handle race condition (??).
Do we really need to have a sleep of 3 seconds to stop this race condition? Completely removing the sleep might break something. But if we put it at 1 second it will run a little bit faster if it parses without the --quick flag.
Personally I am yet to see something break with quick run. And yet to hear someone coherently remember and explain which race condition this is supposedly handling. :)
I have no objection to removing the sleep and I have never had any problems with quick runs, it's just that I forget the quick flag sometimes.
Ahoy. So, originally, @rmccue had built the first version of this parser, and for some reason I can't remember, I didn't think it was very good, so I built my own version inspired by Ryan's, for some stuff on WordPress.com. I introduced the sleeps to work around some interesting issues that the parser had, at that point in time, on the WordPress.com environment (I ran it on a huge chunk of code to test it, and it caused a lag in the replication of that database, which awoke the scary systems team!). My fork was eventually merged back into this project or replaced it (again, I can't remember), and that's the story of the sleep.
Attached PR: #200 simply changes the $skip_sleep parameter defaults to true. We could also look at some kind of constant to force it and/or support back-compat, but this accomplishes the basic spirit of the request.
The sleep is also needed on w.org to avoid db replication lag.
--quick is the default when it's used with the developer.wordpress.org theme on a local environment:
https://github.com/WordPress/wporg-developer/blob/83844d1854c8b6ed64eb02e100f50929ea5bb011/source/wp-content/themes/wporg-developer-2023/inc/cli-commands.php#L168-L171
Bringing something like that over here would be reasonable.
(You'll never replicate any issues that this was trying to solve, unless you're using a replicated mysql environment)