Steps to replicate the issue (include links if applicable):
There are no doubt easier ways to trigger the issue, but this is the one I stumbled on:
- set up CentralAuth
- check out https://gerrit.wikimedia.org/r/c/mediawiki/extensions/CentralAuth/+/973812
- run mwscript CentralAuth:batchCAAntiSpoof.php
What happens?:
Wikimedia\Rdbms\DBConnectionError from line 1123 of /vagrant/mediawiki/includes/libs/rdbms/loadbalancer/LoadBalancer.php: Cannot access the database: Unknown database 'virtual' (127.0.0.1)
Apparently what's happening is that the virtual DB domain virtual-centralauth is treated as a non-virtual DB domain and gets split into a DB and schema part. This is because LBFactory::getMappedDatabase() is only called in getPrimaryDatabase()/getReplicaDatabase() and not e.g. newMainLB(). This breaks / makes unaccessible various things for extensions using virtual domains, e.g. calls to $lbfactory->getMainLB(...)->hasOrMadeRecentPrimaryChanges() in CentralAuth, or ReadOnlyMode::getReason(). It's also just very confusing in general.