If an upgrade requires rebuilding the browse_node table then Nexus Repo will schedule on task per repository to automatically run after restart. When there are a large number of repositories (e.g., around 1000) these tasks get into a livelock situation, where none of them can run. This results in a failed upgrade.
The only workaround is to add this line to nexus.properties:
And to also run database queries while Nexus is not running to remove the browse tree rebuild tasks that were automatically added after upgrade.
Needless to say, this is not a good experience for our users.
Expected: The number of scheduled tasks set to run concurrently should be limited somehow. Either serialize them, or use a thread pool to schedule them to run in batches.