protected static function report( $e ) {
try {
// Try and show the exception prettily, with the normal skin infrastructure
- MWExceptionRenderer::output( $e, MWExceptionRenderer::AS_PRETTY );
+ if ( $e instanceof MWException ) {
+ // Delegate to MWException until all subclasses are handled by
+ // MWExceptionRenderer and MWException::report() has been
+ // removed.
+ $e->report();
+ } else {
+ MWExceptionRenderer::output( $e, MWExceptionRenderer::AS_PRETTY );
+ }
} catch ( Exception $e2 ) {
// Exception occurred from within exception handler
// Show a simpler message for the original exception,
// don't try to invoke report()
- MWExceptionRenderer::output( $e, MWExceptionRenderer::AS_PRETTY, $e2 );
+ MWExceptionRenderer::output( $e, MWExceptionRenderer::AS_RAW, $e2 );
}
}
* @param Exception|Throwable $e
*/
public static function rollbackMasterChangesAndLog( $e ) {
- $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+ $services = MediaWikiServices::getInstance();
+ if ( $services->isServiceDisabled( 'DBLoadBalancerFactory' ) ) {
+ return; // T147599
+ }
+
+ $lbFactory = $services->getDBLoadBalancerFactory();
if ( $lbFactory->hasMasterChanges() ) {
$logger = LoggerFactory::getInstance( 'Bug56269' );
$logger->warning(
$trace = $trace ?: debug_backtrace();
$logger = LoggerFactory::getInstance( 'fatal' );
$logger->error( $msg, [
- 'exception' => [
+ 'fatal_exception' => [
'class' => 'ErrorException',
'message' => "PHP Fatal Error: {$message}",
'code' => $level,