Problem/Motivation
Under circumstances system updates will not be executed as the first ones even if there are no dependencies preventing this. However there are cases where the system and the DB should be prepared before other updates are allowed to run.
Actually there are a lot of places in the core, which are suggesting that it is desired that system updates are the ones being executed first, but under some circumstances this is not completely guaranteed - e.g. having one system update and multiple updates of another module leads to assigning lower weights to the updates of the other module.
Proposed resolution
In update_build_dependency_graph()
find update functions without edges to system updates and add such updates as edges to system updates so that system updates are executed first / get assigned lower weights by \Drupal\Component\Graph\Graph::searchAndSort()
.
Provide a general check in \Drupal\FunctionalTests\Update\UpdatePathTestBase
assuring system updates will be executed first.
Remaining tasks
Review.
User interface changes
None.
API changes
None.
Data model changes
None.