Commit graph

38 commits

Author SHA1 Message Date
Umherirrender
ad776c7d5f Use ::class to resolve class names in maintenance scripts
This helps to find renamed or misspelled classes earlier.
Phan will check the class names

Change-Id: I1d4567f47f93eb1436cb98558388e48d35258666
2018-01-23 17:40:16 +00:00
Bryan Davis
9e34eeff23 Maintenance: add fatalError() method
Deprecate the second argument to Maintenance::error() in favor of a new
Maintenance::fatalError() method. This is intended to make it easier to
review flow control in maintenance scripts.

Change-Id: I75699008638f7e99b11210c7bb9e2e131fca7c9e
2017-11-21 21:34:16 -07:00
Fomafix
202f695f67 Update weblinks in comments from HTTP to HTTPS
Use HTTPS instead of HTTP where the HTTP link is a redirect to the HTTPS link.

Also update some defect links.

Change-Id: Ic3a5eac910d098ed5c2a21e9f47c9b6ee06b2643
2016-11-07 15:24:46 +01:00
Bryan Davis
ee8b8f1d37 Fix RebuildLocalisationCache bug from MediaWikiServices
Revert changes to rebuildLocalisationCache.php introduced in Ie98bf5a.
The forked children do not need separate service connections and the
reset process fails due to MW_SERVICE_BOOTSTRAP_COMPLETE being defined.

Bug: T132370
Change-Id: I0d7ddcd66e7c6945fabd91fea29a48805bf14793
2016-04-11 19:16:31 +00:00
daniel
8e7a0a0912 Allow reset of global services.
This change provides a mechanism to reset global service instances
in an orderly manner. There are three use cases for this:

* the installation process
* forking processes
* integration tests (which must of the existing phpunit tests are)

Depends-On: I5d638ad415fc3840186a0beaa09ac02ea688539b
Change-Id: Ie98bf5af59208f186dba59a9e971c72ea0b63e69
2016-04-11 16:22:40 +02:00
Kunal Mehta
6e9b4f0e9c Convert all array() syntax to []
Per wikitech-l consensus:
 https://lists.wikimedia.org/pipermail/wikitech-l/2016-February/084821.html

Notes:
* Disabled CallTimePassByReference due to false positives (T127163)

Change-Id: I2c8ce713ce6600a0bb7bf67537c87044c7a45c4b
2016-02-17 01:33:00 -08:00
Max Semenik
59db24e90b Use addDescription() instead of accessing mDescription directly
Change-Id: I0e2aa83024b8abf5298cfea4b21bf45722ad3103
2016-01-30 01:28:32 -08:00
Ori Livneh
ef2822f76f rebuildLocalisationCache: don't limit memory usage
The 1000 MB limit seems to have crept in without good reason, and crashing when
crossing an arbitrary threshold like that isn't very useful. LCStoreStaticArray
ends up using more than the default limit allows.

Change-Id: I1d9ab743720f5a1fbe320180c1dcdb4ad03c5aa1
2015-07-13 02:26:34 -07:00
Tim Starling
1e5efc85f3 Fix exit code from rebuildLocalisationCache.php
When --threads was used, the exit code was unconditionally 0, even if a
child thread threw an exception, because the exit code was "abused" for
the count of rebuilt languages. So, don't do that. We don't really need
a count of rebuilt languages that badly, just pass through the exit
status of the child.

Bug: T92900
Change-Id: I77922e686fe7da4fc25bb7f579ed70e1b107eaca
2015-03-18 15:03:28 +00:00
Siebrand Mazeland
606c680b21 Update formatting in maintenance/ (4/4)
Change-Id: I6b58d014a4bfd6600e4e6f80188fdcfce18482ca
2014-04-23 20:09:26 +02:00
umherirrender
e78776373e Fixed some @params documentation (maintenance)
Swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.
Also added some missing @param.

Change-Id: I727deec35a712de0f0c676cc87dfa661f1ee965b
2014-04-17 22:48:32 +02:00
Siebrand Mazeland
04021a8e81 Remove underscore from class LocalisationCache_BulkLoad
Part of program to remove underscores from class names. Checked core and
600+ extensions for occurrences. All uses are in core, and are updated in
this change.

Change-Id: Ib157c3cf209677718ff184552cf872b1d3f4e969
2013-11-17 22:00:34 +01:00
Reedy
297129a4fc Return values from finalSetup() aren't evaluated
Not that parent::finalSetup() returns anything anyway...

Change-Id: I21cb5e13cc83297f24a30ef37859430b0fefb695
2013-08-15 22:53:40 +00:00
Timo Tijhof
beb1c4a0ec phpcs: More require/include is not a function
Follows-up I1343872de7, Ia533aedf63 and I2df2f80b81.

Also updated usage in text in documentation and the
installer LocalSettingsGenerator.

Most of them were handled by this regex:
- find: (require|include|require_once|include_once)\s*\(\s*(.+?)\s*\)\s*;$
- replace: $1 $2;

Change-Id: I6b38aad9a5149c9c43ce18bd8edbab14b8ce43fa
2013-05-21 23:26:28 +02:00
umherirrender
c6894adefc Fixed spacing
Added spaces around some parenthesis

Change-Id: If1e50e2a7b0046e91c0bbce8bf6641d8b2446a1d
2013-05-09 19:48:10 +02:00
Timo Tijhof
50e7985d4d phpcs: Fix WhiteSpace.LanguageConstructSpacing warnings
Squiz.WhiteSpace.LanguageConstructSpacing:
   Language constructs must be followed by a single space;
   expected "require_once expression" but found
   "require_once(expression)"

It is a keyword (e.g. like `new`, `return` and `print`). As
such the parentheses don't make sense.

Per our code conventions, we use a space after keywords like
these. We appeared to have an unwritten exception for `require`
that doesn't make sense. About 60% of require/include usage
was missing the space and/or had superfluous parentheses.

It is as silly as print("foo") or return("foo"), it works
because keywords have no significance for whitespace between
it and the expression that follows, and since experessions can
be wrapped in parentheses for clarity (e.g. when doing string
concatenation or mathematical operations) the parenthesis
before and after basiclaly just ignored.

Change-Id: I2df2f80b8123714bea7e0771bf94b51ad5bb4b87
2013-05-09 05:56:26 +02:00
Antoine Musso
a677d0fae0 rebuildLocalisationCache: Implement --lang option
It would rebuild all language caches by default.
We were lacking an option to rebuild only one language, for example when
it get corrupted or the cache file for a language got removed.

The new --lang accepts a list of comma separated langs to rebuild the
cache for.  Example usage:

 php rebuildLocalisationCache.php --lang en,fr,de

Nonexistent languages are simply ignored. The script dies if it ends up
with no languages to rebuild.

Change-Id: I4c5e69abb76ffd8b88b595e3687edab3bb267ccc
2013-05-01 12:33:12 +02:00
Brad Jorsch
05edbe67d2 Allow non-English wikis to rebuild l10n cache
If a wiki is configured to use the l10n cache and $wgLanguageCode is set
to anything other that 'en', all maintenance scripts will fail until the
l10n cache is build for the first time. This includes
maintenance/rebuildLocalisationCache.php, the maintenance script that
builds the l10n cache.

To break this dependency, have maintenance/rebuildLocalisationCache.php
force $wgLanguageCode = 'en'.

Change-Id: Ia93998b0f85fd122dd7b01eeeef698f595360945
2013-01-10 15:54:15 -05:00
jeroendedauw
38c7f444e1 Use __DIR__ instead of dirname( __FILE__ )
We can now do this since we finally switched to PHP 5.3 for MW 1.20 and get rid of the silly dirname(__FILE__) stuff :)

Change-Id: Id9b2c9cd2e678197aa81c78adced5d1d31ff57b1
2012-08-27 21:45:00 +02:00
Alexandre Emsenhuber
6015071beb Improve documentation of maintenance scripts.
Change-Id: I21b4fb873e88026108754eb7206e62c82648df0e
2012-08-09 19:28:14 +02:00
Reedy
d07bdcf0b3 Make rebuildLocalisationCache.php also obey --memory-limit if set.
Same as https://gerrit.wikimedia.org/r/17473 for runJobs.php

Change-Id: I352df6c2f46606fe575ef5f52a39175b4aad9f75
2012-08-02 23:35:20 +01:00
Robin Pepermans
9184dc83d6 Update core usage of getLanguageName[s]. 2012-03-08 20:56:26 +00:00
Tim Starling
a8ab6c0df7 This script uses about 550MB of RAM on 1.19wmf1. Increase memory limit appropriately. 2012-02-22 06:14:57 +00:00
Tim Starling
691e79c405 Output directory option, to allow messages to be put directly into /h/w/c 2012-02-22 02:09:05 +00:00
Sam Reed
f3f180850a Fixing up undefined types in maintenance documentation 2012-02-09 21:08:06 +00:00
Sam Reed
39ece40f46 Followup r101449, just changing forceRecache isn't actually enough
Add a method to set force to true on the options array to RebuildLocalisationCache
2011-11-01 07:34:56 +00:00
Chad Horohoe
26505b170a Fix concern raised by Brion in r74108 (but has really existed since the maintenance rewrite). Right now, including a maintenance script causes it to execute. This is bad when you want to reuse the particular class but not have it start executing all by itself.
Until now, we relied on setting MW_NO_SETUP which was a) hacky, b) irreversable, and c) likely to be forgotten if you didn't use one of the wrappers like runChild().

Instead, move the freaky magic to doMaintenance and have *it* check if it's in a specific call stack that indicates this is being run from the file scope and should be executed. Rename DO_MAINTENANCE to RUN_MAINTENANCE_IF_MAIN so it's nice and clear what magic happens behind the require_once().
2011-01-13 22:58:55 +00:00
Mark A. Hershberger
617a5b1e15 Whitespace fixup under tha maint directory. 2010-12-04 03:20:14 +00:00
Sam Reed
659778619c Stylize maintenance folder.. 2010-05-22 16:50:39 +00:00
Brion Vibber
7764794ddb Merge and clean up memory_limit hacks from wmf-deployment r53208.
Added a memoryLimit() method on Maintenance class which allows scripts to override the memory limit; normally we disable the limit but sometimes you actually want to set one to avoid eating up RAM on the machine if something goes awry.
2009-09-14 22:10:10 +00:00
Brion Vibber
639b235e6c Multithreaded rebuild currently relies on PHP's pcntl extension, which is not present by default and unsupported on Windows.
Rather than just spitting out a fatal error, let's gracefully fall back to single threading and tell the user why.
(Also now actually validating the thread number, though a maximum might be wise. ;)

Note that this could be implemented without pcntl instead by shelling out to subprocesses.
2009-08-19 00:26:59 +00:00
Niklas Laxström
556aaba705 * "0 languages of N rebuild" when using threads
* Documentation improvements
2009-08-13 16:42:44 +00:00
Niklas Laxström
82e0db11b3 Was occassionally failing due to race condition caused by mt_rand behaviour:
cache/l10n_cache-en.cdb.tmp.1770228300                       
cache/l10n_cache-en.cdb.tmp.1770228300
2009-08-07 11:01:15 +00:00
Chad Horohoe
567f244e36 Revert r54244 which was stupid and fix this properly. Require commandLine.inc/Maintenance.php using the full path every time. 2009-08-03 21:56:41 +00:00
Chad Horohoe
b80f81d4f1 Forgot to bring doRebuild() along :) 2009-08-02 19:56:24 +00:00
Chad Horohoe
a1c51e18af Merge maintenance-work branch (now with less errors!):
* Docs have been updated to indicate the standard on how to write maintenance scripts (MW.org docs will follow) Have ported vast majority of maintenance scripts to new format. Remaining ones (mostly FiveUpgrade-related) are a bit more tricky. commandLine.inc is untouched for now. Many have gotten code-style updates as well. Deleted .inc files were only used by their .php counterparts, and have been merged into single files.
* (bug 11867) Lock error on redirect table when running orphans.php
* (bug 16322) Allow maintenance scripts to accept DB user/pass over input or params
* (bug 18566) Maintenance script to un/protect pages
* initStats overhaul, now uses class SiteStatsInit. Also fixes bug 18930
2009-08-02 19:35:17 +00:00
Niklas Laxström
cfeca6aaa5 Added --threads=N parameter 2009-07-31 09:57:59 +00:00
Tim Starling
23cfebd3d2 * Introduced a new system for localisation caching. The system is based around fast fetches of individual messages, minimising memory overhead and startup time in the typical case. It handles both core messages (formerly in Language.php) and extension messages (formerly in MessageCache.php). Profiling indicates a significant win for average throughput.
* The serialized message cache, which would have been redundant, has been removed. Similar performance characteristics can be achieved with $wgLocalisationCacheConf['manualRecache'] = true;
* Added a maintenance script rebuildLocalisationCache.php for offline rebuilding of the localisation cache.
* Extension i18n files can now contain any of the variables which can be set in Messages*.php. It is possible, and recommended, to use this feature instead of the hooks for special page aliases and magic words. 
* $wgExtensionAliasesFiles, LanguageGetMagic and LanguageGetSpecialPageAliases are retained for backwards compatibility. $wgMessageCache->addMessages() and related functions have been removed. wfLoadExtensionMessages() is a no-op and can continue to be called for b/c. 
* Introduced $wgCacheDirectory as a default location for the various local caches that have accumulated. Suggested $IP/cache as a good place for it in the default LocalSettings.php and created this directory with a deny-all .htaccess.
* Patched Exception.php to avoid using the message cache when an exception is thrown from within LocalisationCache, since this tends to fail horribly.
* Removed Language::getLocalisationArray(), Language::loadLocalisation(), Language::load()
* Fixed FileDependency::__sleep()
* In Cdb.php, fixed newlines in debug messages

In MessageCache::get(): 
* Replaced calls to $wgContLang capitalisation functions with plain PHP functions, reducing the typical case from 99us to 93us. Message cache keys are already documented as being restricted to ASCII.
* Implemented a more efficient way to filter out bogus language codes, reducing the "foo/en" case from 430us to 101us
* Optimised wfRunHooks() in the typical do-nothing case, from ~30us to ~3us. This reduced MessageCache::get() typical case time from 93us to 38us.
* Removed hook MessageNotInMwNs to save an extra 3us per cache hit. Reimplemented the only user (LocalisationUpdate) using the new hook LocalisationCacheRecache.
2009-06-28 07:11:43 +00:00