Simplify logic to prevent writes on replica DB connections
[lhc/web/wiklou.git] / includes / libs / rdbms / database / Database.php
index 3d40417..15e02ad 100644 (file)
@@ -236,12 +236,6 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        /** @var TransactionProfiler */
        protected $trxProfiler;
 
-       /**
-        * @var bool Whether writing is allowed on this connection.
-        *      Should be false for connections to replicas.
-        */
-       protected $allowWrite = true;
-
        /**
         * Constructor and database handle and attempt to connect to the DB server
         *
@@ -283,7 +277,6 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->connLogger = $params['connLogger'];
                $this->queryLogger = $params['queryLogger'];
                $this->errorLogger = $params['errorLogger'];
-               $this->allowWrite = empty( $params['noWrite'] );
 
                // Set initial dummy domain until open() sets the final DB/prefix
                $this->currentDomain = DatabaseDomain::newUnspecified();
@@ -915,13 +908,12 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                }
 
                if ( $isWrite ) {
-                       if ( !$this->allowWrite ) {
+                       if ( $this->getLBInfo( 'replica' ) === true ) {
                                throw new DBError(
                                        $this,
-                                       'Write operations are not allowed on this database connection!'
+                                       'Write operations are not allowed on replica database connections.'
                                );
                        }
-
                        # In theory, non-persistent writes are allowed in read-only mode, but due to things
                        # like https://bugs.mysql.com/bug.php?id=33669 that might not work anyway...
                        $reason = $this->getReadOnlyReason();