We had a mysterious Quibble build time last week when running npm install in parallel. We talked about it over irc in #wikimedia-releng.
The build we looked at is https://integration.wikimedia.org/ci/job/wmf-quibble-selenium-php72-docker/138874/ (marked as keep forever in jenkins).
Other builds:
- https://integration.wikimedia.org/ci/job/wmf-quibble-selenium-php72-docker/138505/ (quibble 1.3.0)
- https://integration.wikimedia.org/ci/job/wmf-quibble-selenium-php72-docker/139142/
- https://integration.wikimedia.org/ci/job/wmf-quibble-selenium-php72-docker/139506/
- https://integration.wikimedia.org/ci/job/wmf-quibble-selenium-php72-docker/139509/
Run `npm audit` for details. <<< Finish: npm install in /workspace/src/extensions/MobileFrontend, in 77.281 s DEBUG:quibble.util:Waiting for Parallel npm install for projects with 'selenium-test' in package.json: 80s elapsed, 60/61 completed DEBUG:quibble.util:Waiting for Parallel npm install for projects with 'selenium-test' in package.json: 90s elapsed, 60/61 completed DEBUG:quibble.util:Waiting for Parallel npm install for projects with 'selenium-test' in package.json: 100s elapsed, 60/61 completed DEBUG:quibble.util:Waiting for Parallel npm install for projects with 'selenium-test' in package.json: 110s elapsed, 60/61 completed DEBUG:quibble.util:Waiting for Parallel npm install for projects with 'selenium-test' in package.json: 120s elapsed, 60/61 completed ... DEBUG:quibble.util:Waiting for Parallel npm install for projects with 'selenium-test' in package.json: 3450s elapsed, 60/61 completed DEBUG:quibble.util:Waiting for Parallel npm install for projects with 'selenium-test' in package.json: 3460s elapsed, 60/61 completed DEBUG:quibble.util:Waiting for Parallel npm install for projects with 'selenium-test' in package.json: 3470s elapsed, 60/61 completed Build timed out (after 60 minutes). Marking the build as failed. Build was aborted
It sounds like a race condition / thread safety issue within the Parallel and/or ProgressReporter class.:
- maybe self.completed =+ 1
- the thread is not properly canceled
- the task being yield is empty/idling/doing nothing