function reportConnectionError(&$conn)
 {
     $fname = 'LoadBalancer::reportConnectionError';
     wfProfileIn($fname);
     # Prevent infinite recursion
     static $reporting = false;
     if (!$reporting) {
         $reporting = true;
         if (!is_object($conn)) {
             $conn = new Database();
         }
         if ($this->mFailFunction) {
             $conn->failFunction($this->mFailFunction);
         } else {
             $conn->failFunction('wfEmergencyAbort');
         }
         $conn->reportConnectionError();
         $reporting = false;
     }
     wfProfileOut($fname);
 }
Example #2
0
 function reportConnectionError(&$conn)
 {
     wfProfileIn(__METHOD__);
     if (!is_object($conn)) {
         // No last connection, probably due to all servers being too busy
         wfLogDBError("LB failure with no last connection\n");
         $conn = new Database();
         if ($this->mFailFunction) {
             $conn->failFunction($this->mFailFunction);
             $conn->reportConnectionError($this->mLastError);
         } else {
             // If all servers were busy, mLastError will contain something sensible
             throw new DBConnectionError($conn, $this->mLastError);
         }
     } else {
         if ($this->mFailFunction) {
             $conn->failFunction($this->mFailFunction);
         } else {
             $conn->failFunction(false);
         }
         $server = $conn->getProperty('mServer');
         wfLogDBError("Connection error: {$this->mLastError} ({$server})\n");
         $conn->reportConnectionError("{$this->mLastError} ({$server})");
     }
     wfProfileOut(__METHOD__);
 }
Example #3
0
 function reportConnectionError(&$conn)
 {
     $fname = 'LoadBalancer::reportConnectionError';
     wfProfileIn($fname);
     # Prevent infinite recursion
     static $reporting = false;
     if (!$reporting) {
         $reporting = true;
         if (!is_object($conn)) {
             // No last connection, probably due to all servers being too busy
             $conn = new Database();
             if ($this->mFailFunction) {
                 $conn->failFunction($this->mFailFunction);
                 $conn->reportConnectionError($this->mLastError);
             } else {
                 // If all servers were busy, mLastError will contain something sensible
                 throw new DBConnectionError($conn, $this->mLastError);
             }
         } else {
             if ($this->mFailFunction) {
                 $conn->failFunction($this->mFailFunction);
             } else {
                 $conn->failFunction(false);
             }
             $server = $conn->getProperty('mServer');
             $conn->reportConnectionError("{$this->mLastError} ({$server})");
         }
         $reporting = false;
     }
     wfProfileOut($fname);
 }