| Index: trunk/extensions/WikimediaMaintenance/storage/make-all-blobs | ||
| — | — | @@ -0,0 +1,18 @@ |
| 2 | +#!/bin/bash | |
| 3 | + | |
| 4 | +if [ -z $1 ];then | |
| 5 | + echo "Usage: make-all-blobs <server> [<table name>]" | |
| 6 | + exit 1 | |
| 7 | +fi | |
| 8 | +server=$1 | |
| 9 | +if [ -z $2 ]; then | |
| 10 | + table=blobs | |
| 11 | +else | |
| 12 | + table=$2 | |
| 13 | +fi | |
| 14 | + | |
| 15 | +for db in `</home/wikipedia/common/all.dblist`;do | |
| 16 | + echo "CREATE DATABASE IF NOT EXISTS $db" | mysql -u wikiadmin -p`wikiadmin_pass` -h $server && \ | |
| 17 | + sed "s/blobs\>/$table/" blobs.sql | mysql -u wikiadmin -p`wikiadmin_pass` -h $server $db | |
| 18 | +done | |
| 19 | + | |
| Property changes on: trunk/extensions/WikimediaMaintenance/storage/make-all-blobs | ||
| ___________________________________________________________________ | ||
| Added: svn:mergeinfo | ||
| 1 | 20 | Merged /branches/wmf-deployment/maintenance/storage/make-all-blobs:r60970 |
| 2 | 21 | Merged /branches/REL1_15/phase3/maintenance/storage/make-all-blobs:r51646 |
| 3 | 22 | Merged /branches/wmf/1.16wmf4/maintenance/storage/make-all-blobs:r67177,69199,76243,77266 |
| 4 | 23 | Merged /trunk/phase3/maintenance/storage/make-all-blobs:r52290,52402,52404,52718,52737,52759,52776,52791,52800,52808,52812-52813,52815-52819,52822,52846,52850,52852-52853,52855-52857,52859,52924,52986,53128-53129,53190,53197,53199,53203-53204,53210-53211,53247,53249,53252,53267,53270,53293,53305,53344,53369,53427,53502-53504,53506,53777,54384,54494,54592,54599-54602,54604,54613,54764,54793,54806,55178,55626,56325,56862,56867,57154-57447,57541,57916,58151,58219,58633,58816,77555,77558-77560,77563-77565,77573 |
| Added: svn:executable | ||
| 5 | 24 | + * |
| Index: trunk/extensions/WikimediaMaintenance/storage/testRctComplete.php | ||
| — | — | @@ -0,0 +1,22 @@ |
| 2 | +<?php | |
| 3 | +require_once( dirname(__FILE__).'/../commandLine.inc' ); | |
| 4 | + | |
| 5 | +$bad = 0; | |
| 6 | +$good = 0; | |
| 7 | +foreach ( $wgLocalDatabases as $wiki ) { | |
| 8 | + $lb = wfGetLB( $wiki ); | |
| 9 | + $db = $lb->getConnection( DB_SLAVE, array(), $wiki ); | |
| 10 | + if ( $db->tableExists( 'blob_tracking' ) ) { | |
| 11 | + $notDone = $db->selectField( 'blob_tracking', '1', | |
| 12 | + array( 'bt_moved' => 0 ) ); | |
| 13 | + if ( $notDone ) { | |
| 14 | + $bad++; | |
| 15 | + echo "$wiki\n"; | |
| 16 | + } else { | |
| 17 | + $good++; | |
| 18 | + } | |
| 19 | + } | |
| 20 | + $lb->reuseConnection( $db ); | |
| 21 | +} | |
| 22 | +echo "$bad wiki(s) incomplete\n"; | |
| 23 | +echo "$good wiki(s) complete\n"; | |
| Property changes on: trunk/extensions/WikimediaMaintenance/storage/testRctComplete.php | ||
| ___________________________________________________________________ | ||
| Added: svn:mergeinfo | ||
| 1 | 24 | Merged /trunk/phase3/maintenance/storage/testRctComplete.php:r52290,52402,52404,52718,52737,52759,52776,52791,52800,52808,52812-52813,52815-52819,52822,52846,52850,52852-52853,52855-52857,52859,52924,52986,53128-53129,53190,53197,53199,53203-53204,53210-53211,53247,53249,53252,53267,53270,53293,53305,53344,53369,53427,53502-53504,53506,53777,54384,54494,54592,54599-54602,54604,54613,54764,54793,54806,55178,55626,56325,56862,56867,57154-57447,57541,57916,58151,58219,58633,58816,77555,77558-77560,77563-77565,77573 |
| 2 | 25 | Merged /branches/wmf-deployment/maintenance/storage/testRctComplete.php:r60970 |
| 3 | 26 | Merged /branches/REL1_15/phase3/maintenance/storage/testRctComplete.php:r51646 |
| 4 | 27 | Merged /branches/wmf/1.16wmf4/maintenance/storage/testRctComplete.php:r67177,69199,76243,77266 |
| Added: svn:eol-style | ||
| 5 | 28 | + native |
| Index: trunk/extensions/WikimediaMaintenance/jeluf.php | ||
| — | — | @@ -0,0 +1,103 @@ |
| 2 | +<?php | |
| 3 | +/** | |
| 4 | + * This script starts pending jobs. | |
| 5 | + * | |
| 6 | + * Usage: | |
| 7 | + * --maxjobs <num> (default 10000) | |
| 8 | + * --type <job_cmd> | |
| 9 | + * | |
| 10 | + * This program is free software; you can redistribute it and/or modify | |
| 11 | + * it under the terms of the GNU General Public License as published by | |
| 12 | + * the Free Software Foundation; either version 2 of the License, or | |
| 13 | + * (at your option) any later version. | |
| 14 | + * | |
| 15 | + * This program is distributed in the hope that it will be useful, | |
| 16 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 17 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 18 | + * GNU General Public License for more details. | |
| 19 | + * | |
| 20 | + * You should have received a copy of the GNU General Public License along | |
| 21 | + * with this program; if not, write to the Free Software Foundation, Inc., | |
| 22 | + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
| 23 | + * http://www.gnu.org/copyleft/gpl.html | |
| 24 | + * | |
| 25 | + * @ingroup Maintenance | |
| 26 | + */ | |
| 27 | + | |
| 28 | +require_once( dirname(__FILE__) . '/Maintenance.php' ); | |
| 29 | + | |
| 30 | +class RunJobs extends Maintenance { | |
| 31 | + public function __construct() { | |
| 32 | + parent::__construct(); | |
| 33 | + $this->mDescription = "Run pending jobs"; | |
| 34 | + $this->addOption( 'maxjobs', 'Maximum number of jobs to run', false, true ); | |
| 35 | + $this->addOption( 'type', 'Type of job to run', false, true ); | |
| 36 | + $this->addOption( 'procs', 'Number of processes to use', false, true ); | |
| 37 | + } | |
| 38 | + | |
| 39 | + public function memoryLimit() { | |
| 40 | + // Don't eat all memory on the machine if we get a bad job. | |
| 41 | + return "150M"; | |
| 42 | + } | |
| 43 | + | |
| 44 | + public function execute() { | |
| 45 | + global $wgTitle; | |
| 46 | + if ( $this->hasOption( 'procs' ) ) { | |
| 47 | + $procs = intval( $this->getOption('procs') ); | |
| 48 | + if ( $procs < 1 || $procs > 1000 ) { | |
| 49 | + $this->error( "Invalid argument to --procs", true ); | |
| 50 | + } | |
| 51 | + $fc = new ForkController( $procs ); | |
| 52 | + if ( $fc->start( $procs ) != 'child' ) { | |
| 53 | + exit( 0 ); | |
| 54 | + } | |
| 55 | + } | |
| 56 | + $maxJobs = $this->getOption( 'maxjobs', 10000 ); | |
| 57 | + $type = $this->getOption( 'type', false ); | |
| 58 | + $wgTitle = Title::newFromText( 'RunJobs.php' ); | |
| 59 | + $dbw = wfGetDB( DB_MASTER ); | |
| 60 | + $n = 0; | |
| 61 | + $conds = ''; | |
| 62 | + if ($type !== false) | |
| 63 | + $conds = "job_cmd = " . $dbw->addQuotes($type); | |
| 64 | + | |
| 65 | + while ( $dbw->selectField( 'job', 'job_id', $conds, 'runJobs.php' ) ) { | |
| 66 | + $offset=0; | |
| 67 | + for (;;) { | |
| 68 | + $job = ($type == false) ? | |
| 69 | + Job::pop($offset) | |
| 70 | + : Job::pop_type($type); | |
| 71 | + | |
| 72 | + if ($job == false) | |
| 73 | + break; | |
| 74 | + | |
| 75 | + wfWaitForSlaves( 5 ); | |
| 76 | + $t = microtime( true ); | |
| 77 | + $offset=$job->id; | |
| 78 | + $status = $job->run(); | |
| 79 | + $t = microtime( true ) - $t; | |
| 80 | + $timeMs = intval( $t * 1000 ); | |
| 81 | + if ( !$status ) { | |
| 82 | + $this->runJobsLog( $job->toString() . " t=$timeMs error={$job->error}" ); | |
| 83 | + } else { | |
| 84 | + $this->runJobsLog( $job->toString() . " t=$timeMs good" ); | |
| 85 | + } | |
| 86 | + if ( $maxJobs && ++$n > $maxJobs ) { | |
| 87 | + break 2; | |
| 88 | + } | |
| 89 | + } | |
| 90 | + } | |
| 91 | + } | |
| 92 | + | |
| 93 | + /** | |
| 94 | + * Log the job message | |
| 95 | + * @param $msg String The message to log | |
| 96 | + */ | |
| 97 | + private function runJobsLog( $msg ) { | |
| 98 | + $this->output( wfTimestamp( TS_DB ) . " $msg\n" ); | |
| 99 | + wfDebugLog( 'runJobs', $msg ); | |
| 100 | + } | |
| 101 | +} | |
| 102 | + | |
| 103 | +$maintClass = "RunJobs"; | |
| 104 | +require_once( DO_MAINTENANCE ); | |
| Index: trunk/extensions/WikimediaMaintenance/jobs-loop.sh | ||
| — | — | @@ -0,0 +1,41 @@ |
| 2 | +#!/bin/bash | |
| 3 | + | |
| 4 | +trap 'kill %-; exit' SIGTERM | |
| 5 | +[ ! -z "$1" ] && { | |
| 6 | + echo "starting type-specific job runner: $1" | |
| 7 | + type=$1 | |
| 8 | +} | |
| 9 | + | |
| 10 | +#types="htmlCacheUpdate sendMail enotifNotify uploadFromUrl fixDoubleRedirect renameUser" | |
| 11 | +types="sendMail enotifNotify uploadFromUrl fixDoubleRedirect" | |
| 12 | + | |
| 13 | +cd `readlink -f /usr/local/apache/common/multiversion` | |
| 14 | +while [ 1 ];do | |
| 15 | + # Do the prioritised types | |
| 16 | + moreprio=y | |
| 17 | + while [ -n "$moreprio" ] ; do | |
| 18 | + moreprio= | |
| 19 | + for type in $types; do | |
| 20 | + db=`php -n MWScript.php nextJobDB.php --wiki=aawiki --type="$type"` | |
| 21 | + if [ -n "$db" ]; then | |
| 22 | + echo "$db $type" | |
| 23 | + nice -n 20 php MWScript.php runJobs.php --wiki="$db" --procs=5 --type="$type" --maxtime=300 & | |
| 24 | + wait | |
| 25 | + moreprio=y | |
| 26 | + fi | |
| 27 | + done | |
| 28 | + done | |
| 29 | + | |
| 30 | + # Do the remaining types | |
| 31 | + db=`php -n MWScript.php nextJobDB.php --wiki=aawiki` | |
| 32 | + | |
| 33 | + if [ -z "$db" ];then | |
| 34 | + # No jobs to do, wait for a while | |
| 35 | + echo "No jobs..." | |
| 36 | + sleep 5 | |
| 37 | + else | |
| 38 | + echo "$db" | |
| 39 | + nice -n 20 php MWScript.php runJobs.php --wiki="$db" --procs=5 --maxtime=300 & | |
| 40 | + wait | |
| 41 | + fi | |
| 42 | +done | |
| Property changes on: trunk/extensions/WikimediaMaintenance/jobs-loop.sh | ||
| ___________________________________________________________________ | ||
| Added: svn:mergeinfo | ||
| 1 | 43 | Merged /branches/wmf/1.16wmf4/maintenance/jobs-loop.sh:r67177,69199,76243,77266 |
| 2 | 44 | Merged /trunk/phase3/maintenance/jobs-loop.sh:r52290,52402,52404,52718,52737,52759,52776,52791,52800,52808,52812-52813,52815-52819,52822,52846,52850,52852-52853,52855-52857,52859,52924,52986,53128-53129,53190,53197,53199,53203-53204,53210-53211,53247,53249,53252,53267,53270,53293,53305,53344,53369,53427,53502-53504,53506,53777,54384,54494,54592,54599-54602,54604,54613,54764,54793,54806,55178,55626,56325,56862,56867,57154-57447,57541,57916,58151,58219,58633,58816,77555,77558-77560,77563-77565,77573 |
| 3 | 45 | Merged /branches/wmf-deployment/maintenance/jobs-loop.sh:r60970 |
| 4 | 46 | Merged /branches/REL1_15/phase3/maintenance/jobs-loop.sh:r51646 |
| Added: svn:eol-style | ||
| 5 | 47 | + native |
| Added: svn:executable | ||
| 6 | 48 | + * |
US