Commit graph

295 commits

Author SHA1 Message Date
James D. Forrester
0958a0bce4 Coding style: Auto-fix MediaWiki.Usage.IsNull.IsNull
Change-Id: I90cfe8366c0245c9c67e598d17800684897a4e27
2020-01-10 14:17:13 -08:00
James D. Forrester
4f2d1efdda Coding style: Auto-fix MediaWiki.Classes.UnsortedUseStatements.UnsortedUse
Change-Id: I94a0ae83c65e8ee419bbd1ae1e86ab21ed4d8210
2020-01-10 09:32:25 -08:00
jenkins-bot
748110478c Merge "Show the PHPUnit help in phpunit.php --help" 2019-12-02 17:59:29 +00:00
Umherirrender
c7ad21c25f Improve param docs
Change-Id: I746a69f6ed01c3ff000da125457df62b02d13b34
2019-11-28 19:08:59 +01:00
Tim Starling
15e058d46e Show the PHPUnit help in phpunit.php --help
Split Maintenance::showHelp() from Maintenance::maybeHelp(), and
override it in phpunit.php. Expose PHPUnit's protected method
Command::showHelp() in our subclass and call it, so that running
"phpunit.php  --help" causes the MediaWiki options to be shown, followed
by the PHPUnit options.

Change-Id: I4687d484e322a465af0492789645819cd8a7b67c
2019-11-25 17:19:20 +11:00
Daimona Eaytoy
b1a5367ec8 Fix new phan errors, part 7
Bug: T231636
Change-Id: Ia5e0abee7163c5a1abd0bb53b89603cc2e7a9b5c
2019-10-21 22:10:20 +00:00
Umherirrender
a7fb6361a6 Add type hint for $maintClass
Change-Id: I0ba7fd7eb6145ab12625796c842bb2b664d362ab
2019-10-04 19:59:59 +02:00
TheSandDoctor
d6f4189088 Maintenance.php: Fix mwdebug error
Resolve error with showJobs.php --mwdebug option. Previously, it displayed an error if not followed by "=1".
This was resolved by changing
$this->addOption( 'mwdebug', 'Enable built-in MediaWiki development settings', false, true );
to
$this->addOption( 'mwdebug', 'Enable built-in MediaWiki development settings', false, false );

Bug: T233257
Change-Id: I322fa539a302c2726fffd2420f7f56aec476b32b
2019-09-23 10:24:19 -07:00
Brad Jorsch
d2725a8e11 maintenance/Maintenance.php: Fix MW_ENTRY_POINT definition (followup I24099f4c)
Quotes were omitted. This currently works in PHP, but raises a warning.

Change-Id: I4c9ce4b5ea9fb9f30215f646cc8fa60db0ed7d1c
2019-09-09 11:56:57 -04:00
jenkins-bot
1880c8401a Merge "Add MW_REST_API and MW_ENTRY_POINT" 2019-09-09 15:29:21 +00:00
Daimona Eaytoy
b5cbb5ab3f Upgrade phan config to 0.7.1
This allows us to remove many suppressions for phan false positives.

Bug: T231636
Depends-On: I82a279e1f7b0fdefd3bb712e46c7d0665429d065
Change-Id: I5c251e9584a1ae9fb1577afcafb5001e0dcd41c7
2019-09-04 08:20:53 +00:00
Daimona Eaytoy
43cc14657d Unsuppress phan issues, part 8
And also clean up the config.

Bug: T231636
Depends-On: Ie6233561de78457cae5e4e44e220feec2d1272d8
Change-Id: I82a279e1f7b0fdefd3bb712e46c7d0665429d065
2019-09-04 01:02:06 +00:00
Daimona Eaytoy
c659bc6308 Unsuppress another phan issue (part 7)
Bug: T231636
Depends-On: I2cd24e73726394e3200a570c45d5e86b6849bfa9
Depends-On: I4fa3e6aad872434ca397325ed7a83f94973661d0
Change-Id: Ie6233561de78457cae5e4e44e220feec2d1272d8
2019-09-03 17:19:21 +00:00
Tim Starling
b7ce7aacb0 Add MW_REST_API and MW_ENTRY_POINT
Define the global constant MW_REST_API in rest.php, by analogy with
MW_API. Also generalize this by adding MW_ENTRY_POINT, which contains
the entry script name, "cli" or "unknown". This allows tests such as

  if ( MW_ENTRY_POINT !== 'index' )

which is probably what is really intended by defined('MW_API') in many
cases.

Change-Id: I24099f4cdd170de17afd6e1bbad67c9b204071fc
2019-09-03 11:43:18 +10:00
Timo Tijhof
8a87ec2778 profiler: Centralise output responsibility from ProfilerOutputText to Profiler
Make it Profiler.php's responsibility to enforce this, based on the
existing signal from ProfilerOutput::logsToOutput().

The ProfilerOutputText class should not have to double-check this
a second time.

Long-term, I'd like even this check in Profiler::logDataPageOutputOnly
to be removed, because really the external caller of that should
know whether it is safe to output stuff or not rather than stashing
its own state inside Profiler::$allowOutput and then implicitly
reading it back out again later on. But, that's for another time.

Also:
* Remove use of deprecated Profiler::setTemplated while at it.
* Make 'visible' parameter explicit, as for other parameters.

Change-Id: Iaa3fc4ea25a059b90235d769db60c04b8f152f05
2019-08-28 16:07:18 +00:00
jenkins-bot
553c6c4197 Merge "Convert maintenance scripts to LoadBalancer::getMaintenanceConnectionRef()" 2019-08-02 22:52:23 +00:00
Aaron Schulz
4a55e578ff Convert maintenance scripts to LoadBalancer::getMaintenanceConnectionRef()
Change-Id: I8944a052f51a1941ad3b76a40fc9c46d1363c426
2019-08-02 22:29:43 +00:00
David Causse
bc0de57e75 Simplify SearchUpdate constructor and hard deprecate some param types
Change-Id: I5677041169402014f1afc1a9012460c760ca24b6
2019-08-01 17:24:42 +02:00
daniel
275d6e2ad4 Tell users how they can force a maintenance script to run again.
Subclasses of LoggedUpdateMaintenance tell the user that "Update
'{$key}' already logged as completed". This adds "Use --force to
run it again."

Bug: T200653
Change-Id: I8cf3c5383c0fecdc92b58048138332855b5602a6
2019-07-05 13:23:21 +00:00
jenkins-bot
f444e41fb5 Merge "Fix documentation of Maintenance::updateSearchIndex" 2019-06-10 20:18:53 +00:00
Umherirrender
9d82a218ac Fix documentation of Maintenance::updateSearchIndex
Document callback as callable type and the results part as
IResultWrapper to match the implementation, which is passing return of
Database::query to this function

Change-Id: I63ee8d4907590a21ef34d0b761b8fabfe0ff2569
2019-06-07 19:22:19 +02:00
Umherirrender
5f43b1706c Pass options as array to IDatabase::insert
The documentation only allows arrays there

Change-Id: I00c6e47a817a70bed9a443aebc675ef4c3d6b1e5
2019-06-07 19:12:35 +02:00
Kunal Mehta
01541db36b Remove usage of deprecated SkinFactory::getDefaultInstance()
Change-Id: I3bd50f8ca5baabd34dbc0e3bbc2f97e94650a17a
2019-06-02 21:08:07 -04:00
jenkins-bot
1663892723 Merge "Set MW_INSTALL_PATH in Maintenance.php" 2019-04-12 20:34:45 +00:00
Aryeh Gregor
b46a32c85f Set MW_INSTALL_PATH in Maintenance.php
Otherwise, if running update.php, there are require_once failures from
extensions (at least Echo and Flow) if they aren't inside extensions/ --
e.g., if they're just symlinked from there.

Change-Id: Iaf4231abae1621627f01171f955b5bb7a0fa77d8
2019-04-11 11:39:45 +03:00
Fomafix
14d9e80ba4 Fix order of @var parameter in PHP
Replace

 @var $foo type

by

 @var type $foo

Change-Id: Iec8b90ffea4028a1005daef422b7c4ec38c2715f
2019-04-08 18:37:56 +02:00
Derick Alangi
84292b7728 Replace deprecated function wfEscapeShellArg with Shell::escape()
Change-Id: I4046d593d1450cfffc489ca2abadba1084a540e4
2019-04-07 20:17:39 +01:00
jenkins-bot
b0a3dd3653 Merge "maintenance: Deprecate Maintenance::hasArg/getArg with no param" 2019-03-31 16:36:23 +00:00
jenkins-bot
a6facc8a0a Merge "Allow extensions to add params to the update.php maintenance script" 2019-03-29 16:33:55 +00:00
Thiemo Kreuz
06c1a5976c maintenance: Deprecate Maintenance::hasArg/getArg with no param
Benefit of keeping the parameter optional:
- In maintenance scripts that really only have one parameter, it's a
  little more convenient to be able to ask for *the* parameter via an
  empty getArg().

Disadvantages:
- It's unclear what getArg() means when there is no indication *which*
  argument the code asks for. This might as well return the last
  argument, or an array of all arguments.
- In scripts with two or more arguments, it's confusing to see
  getArg( 1 ) next to an empty getArg().
- The methods are more complex and a bit more complicated to use with
  the extra feature of this parameter being optional. Users need to
  look up what the default is to be able to use it safely.

Change-Id: I22a43bfdfc0f0c9ffdb468c13aba73b888d1f15e
2019-03-29 14:37:46 +01:00
Bill Pirkle
4d5edb65f3 Allow extensions to add params to the update.php maintenance script
T110209 caused maintenance scripts to fail on unknown parameters,
which is normally desirable.  However, some extensions (notably
SemanticMediaWiki) need to support additional params and had no
way to add them to the list of expected parameters.  It will
now be possible them to update.php via a new hook:
MaintenanceUpdateAddParams.

Bug: T213893
Change-Id: Ia40949ccb2f32090f21e0f3f7e5b9c4aef322330
2019-03-26 21:12:49 -05:00
Thiemo Kreuz
e5831cfd5a maintenance: Use the ?? feature together with explode()
This gets rid of a few if(), count() and such that make the code appear
quite complicated, even if it isn't.

Change-Id: Iade6589eba2a9496b28042bfc777b92258b3332a
2019-03-26 11:45:42 +01:00
Aaron Schulz
7d33a793e4 Fix fatal due to lock name mismatch in Maintenance::unlockSearchindex
Change-Id: Id18c0c8eb20c215ba7421e087b721ac7dc57227a
2019-03-19 21:29:14 -07:00
Bill Pirkle
f7afe42713 Remove many references to db fields being retired as part of MCR Schema Migration
Remove many references to database fields rev_text_id and ar_text_id,
which are being retired as part of MCR Schema Migration.
Some references remain, and will be removed under other patchsets
or other tasks.

Bug: T198341
Change-Id: Id044b8dcd7c9d09d5d6037eb732f6a105933f516
2019-03-19 10:50:54 -05:00
Thiemo Kreuz
007bfbf835 maintenance: Add missing limit parameters to some explode()
This is, in theory, a loophole that can not only cause such code to
consume suprising amounts of memory and runtime. It can also create
suprising results. For example, an input like

 -param="might contain a = char"

might result in a cut-off value.

Not so much of a problem in a maintenance script. But still good
practice, I find.

Change-Id: I14fb278e6fdb61d0c486ca7e23229851ea479408
2019-03-01 17:17:40 +00:00
Derick Alangi
027fb1c8cd Fix condition if...else in getDB() & PHPDoc comment for getUserDB()
So the conditional check should by default return $this->mDb if it's not
null, so, the else seems not to be needed(?). If we have a database handle
to process the current batch, $this->getDB() will return IMaintainableDatabase
but if it's not available (null), a call to $this->getDB() will return an
instance of \Wikimedia\Rdbms\Database is returned instead.

In accordance with the documentation (phpdoc), update the method getUserDB()
to be compliant with callers return type.

Change-Id: I95f3407dd2ffe8e4a1ad7a70be86b6cf3b65ff50
2019-02-06 09:50:59 +00:00
Thiemo Kreuz
4b71077646 Remove a few obscure "done" and "empty" comments
These don't add any knowledge to what is already obvious from the
code, I find.

Change-Id: Ia613b6a059f78dbeefdfd020899bd1a6e239a731
2019-01-30 20:35:14 +00:00
jenkins-bot
beafc6a7f5 Merge "PHPVersionCheck: Remove obsolete load.php code and simplify" 2018-11-02 22:42:17 +00:00
Aaron Schulz
7ac86091e8 Avoid using return value of IDatabase::insert()
Change-Id: I5992e4f03cd522b25607947291795d1da60d0291
2018-10-28 22:14:07 +00:00
Timo Tijhof
e6763161e7 PHPVersionCheck: Remove obsolete load.php code and simplify
* Remove obsolete handling for 'load.php', which no longer
  uses this check. This hasn't been used for several releases.

* Remove the 'entryPoint' parameter in favour of 'format',
  which it was already a proxy for.

* Move the double dirname() logic to mw-config/index.php.

Bug: T189966
Change-Id: I343216442475d36e61213900f196ab6ec5f6b747
2018-10-28 14:12:54 -07:00
Umherirrender
a4caa4d0c6 build: Updating mediawiki/mediawiki-codesniffer to 22.0.0
Added spaces around .
Removed empty return statement which are not required
Removed return after phpunit markTestIncomplete,
which is throwing to exit the test, no need for a return

Change-Id: I2c80b965ee52ba09949e70ea9e7adfc58a1d89ce
2018-09-16 15:51:11 +00:00
Tim Starling
e8df0fbab1 Don't throw an exception when waiting for replication times out
For maintenance scripts it is usually harmful to throw an exception.
For jobs the exception was already caught and handled appropriately,
so this can continue as before. For DeferredUpdates it was extremely
harmful to throw an exception. So in the web case, reduce the timeout to
1s and continue as normal if the 1s timeout is reached. This allows the
DeferredUpdate to be throttled without being killed.

In the updater, increase the replication wait timeout to 5 minutes.
ALTER TABLE could indeed cause replication lag, but exiting the update
script with an exception will probably ruin your day. Update actions are
not necessarily efficiently restartable.

Do not call JobQueue::waitForBackups() when jobs are popped. Maybe it
makes sense to call a queue-specific replication wait function for
bulk inserts, like copyJobQueue.php, but doing it when jobs are popped
just makes no sense. Surely the worst that could happen is that the
queue would become locally empty? Removing this waitForBackups() call
avoids waiting for replication twice when JobQueueDB is used.

Bug: T201482
Change-Id: Ia820196caccf9c95007aea12175faf809800f084
2018-09-03 12:29:35 +10:00
petarpetkovic
b7a4e82545 Fix some of the common typos
* supress -> suppress (Except in backup_LogTest.php)
* recomend -> recommend
* becuase -> because
* accross -> across

Bug: T201491
Change-Id: I8faa4e6cc688b3ee204b3f79ab55eb7b65cc1fdd
2018-08-16 00:59:32 +02:00
Bill Pirkle
2bd7259a2c Make maintenance scripts fail on unknown parameters
Passing parameters not registered via standard mechanisms
(addOption/$optionsWithArgs/$optionsWihtoutArgs) will now
cause an error, unless, the script opts out via the new
setAllowUnregisteredOptions/$allowUnregisteredOptions.

Bug: T110209
Change-Id: I21957837f10852169ca3e1eeca9bf1f4052f8c0b
2018-08-06 14:37:49 -05:00
Bill Pirkle
6dab8d553e Remove deprecated variable usage from Maintenance.php
Idead2c11c4 deprecated and made nonfunctional the
$wgShowSQLErrors variable, but failed to remove its
usage from Maintenance.php.
This commit removes that usage and replaces it with the
new perferred method of enabling detailed output.

Bug: T165768
Change-Id: I98620ddd493703863755f426dd54f7a4e5ae05f1
2018-08-01 10:52:10 -05:00
Umherirrender
130ec2523d Fix PhanTypeMismatchDeclaredParam
Auto fix MediaWiki.Commenting.FunctionComment.DefaultNullTypeParam sniff

Change-Id: I865323fd0295aabd06f3e3c75e0e5043fb31069e
2018-07-07 00:34:30 +00:00
jenkins-bot
5e2af4503b Merge "Document return of void in Maintenance::execute" 2018-07-06 16:45:09 +00:00
Kunal Mehta
6849ebc7d1 Maintenance: Don't try shelling out if it's disabled
Change-Id: Ib30c55aa9e048960f8fa66a41f7e2aa2fa03b253
2018-07-02 22:15:53 +00:00
Umherirrender
b4b1e6d698 Document return of void in Maintenance::execute
Change-Id: I3309bf7c57b5f9304d1fb3ad55d024bec4a43bf5
2018-06-24 22:03:48 +02:00
Marius Hoch
2bb5329595 Maintenance::finalSetup: Make sure we re-create LBFactory
This seems to work anyway (as no connections are needed at
this time), but I guess it's more robust to explicitly
destroy any existing instances.

Bug: T147169
Change-Id: Id56a62d1830fc1464a80dd4420ffddd797bf8b51
2018-06-19 19:46:01 +02:00