rdbms: add DBConnRef sanity check to LoadBalancer::closeConnection
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 21 Nov 2018 07:06:22 +0000 (23:06 -0800)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 21 Nov 2018 07:06:22 +0000 (23:06 -0800)
Change-Id: I0473ffb1f89301530518f1921fe9d5ca68eb194c

includes/libs/rdbms/loadbalancer/LoadBalancer.php

index 7721707..537301c 100644 (file)
@@ -1281,6 +1281,11 @@ class LoadBalancer implements ILoadBalancer {
        }
 
        public function closeConnection( IDatabase $conn ) {
+               if ( $conn instanceof DBConnRef ) {
+                       // Avoid calling close() but still leaving the handle in the pool
+                       throw new RuntimeException( __METHOD__ . ': got DBConnRef instance.' );
+               }
+
                $serverIndex = $conn->getLBInfo( 'serverIndex' );
                foreach ( $this->conns as $type => $connsByServer ) {
                        if ( !isset( $connsByServer[$serverIndex] ) ) {