Fix race condition in concurrent extension media installation.

Review Request #14856 — Created Feb. 26, 2026 and updated

Information

Djblets
release-5.x

Reviewers

When running tests on CI, I hit a race condition which caused the
ExtensionManagerTests::test_install_media_concurrent_threads test to
fail.

The version check in install_extension_media() happened only before
acquiring the lock file. If one thread completed the install and released
the lock before another thread attempted to acquire it, the second thread
would successfully lock and redundantly reinstall, since its local
old_version was already stale.

This change makes us re-check the installed version after acquiring the
lock to skip the install if another thread/process already completed it.

Ran unit tests.

Summary ID
Fix race condition in concurrent extension media installation.
When running tests on CI, I hit a race condition which caused the `ExtensionManagerTests::test_install_media_concurrent_threads` test to fail. The version check in `install_extension_media()` happened only before acquiring the lock file. If one thread completed the install and released the lock before another thread attempted to acquire it, the second thread would successfully lock and redundantly reinstall, since its local old_version was already stale. This change makes us re-check the installed version after acquiring the lock to skip the install if another thread/process already completed it. Testing Done: Ran unit tests.
sozvymzulnkzsutumprovzkqmpympuwu
Checks run (2 succeeded)
flake8 passed.
JSHint passed.