setup(); // We used to call this variable $self, but it was moved // to $maintenance->mSelf. Keep that here for b/c $self = $maintenance->getName(); // Define how settings are loaded (e.g. LocalSettings.php) if ( !defined( 'MW_CONFIG_CALLBACK' ) && !defined( 'MW_CONFIG_FILE' ) ) { define( 'MW_CONFIG_FILE', $maintenance->loadSettings() ); } // Custom setup for Maintenance entry point if ( !defined( 'MW_SETUP_CALLBACK' ) ) { function wfMaintenanceSetup() { // phpcs:ignore MediaWiki.NamingConventions.ValidGlobalName.wgPrefix global $maintenance, $wgLocalisationCacheConf, $wgCacheDirectory; if ( $maintenance->getDbType() === Maintenance::DB_NONE ) { if ( $wgLocalisationCacheConf['storeClass'] === false && ( $wgLocalisationCacheConf['store'] == 'db' || ( $wgLocalisationCacheConf['store'] == 'detect' && !$wgCacheDirectory ) ) ) { $wgLocalisationCacheConf['storeClass'] = LCStoreNull::class; } } $maintenance->finalSetup(); } define( 'MW_SETUP_CALLBACK', 'wfMaintenanceSetup' ); } require_once "$IP/includes/Setup.php"; // Initialize main config instance $maintenance->setConfig( MediaWikiServices::getInstance()->getMainConfig() ); // Sanity-check required extensions are installed $maintenance->checkRequiredExtensions(); // A good time when no DBs have writes pending is around lag checks. // This avoids having long running scripts just OOM and lose all the updates. $maintenance->setAgentAndTriggers(); $maintenance->validateParamsAndArgs(); // Do the work try { $success = $maintenance->execute(); } catch ( Exception $ex ) { $success = false; while ( $ex ) { $cls = get_class( $ex ); print "$cls from line {$ex->getLine()} of {$ex->getFile()}: {$ex->getMessage()}\n"; print $ex->getTraceAsString() . "\n"; $ex = $ex->getPrevious(); } } // Potentially debug globals $maintenance->globals(); if ( $maintenance->getDbType() !== Maintenance::DB_NONE ) { // Perform deferred updates. $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); $lbFactory->commitMasterChanges( $maintClass ); DeferredUpdates::doUpdates(); } // log profiling info wfLogProfilingData(); if ( isset( $lbFactory ) ) { // Commit and close up! $lbFactory->commitMasterChanges( 'doMaintenance' ); $lbFactory->shutdown( $lbFactory::SHUTDOWN_NO_CHRONPROT ); } // Exit with an error status if execute() returned false if ( $success === false ) { exit( 1 ); }