Commit graph

24 commits

Author SHA1 Message Date
Umherirrender
06947613d7 maintenance: Use namespaced classes
This does not include use of MediaWiki\Maintenance\Maintenance,
assuming the maintenance scripts going into the same namespace

Change-Id: I488f95b537ce86eb5e463be7bce3653610dd13d9
2024-10-21 19:08:08 +02:00
Dreamy Jazz
e7393b3cc7 Exclude boilerplate maintenance code from code coverage reports
Why:
* Maintenance scripts in core have bolierplate code that is
  added before and after the class to allow directly running
  the maintenance script.
* Running the maintenance script directly has been deprecated
  since 1.40, so this boilerplate code is only to support a now
  deprecated method of running maintenance scripts.
* This code cannot also be marked as covered, due to PHPUnit
  not recognising code coverage for files.
* Therefore, it is best to ignore this boilerplate code in code
  coverage reports as it cannot be marked as covered and also
  is for deprecated code.

What:
* Wrap the boilerplate code (requiring Maintenance.php and then
  later defining the maintenance script class and running if the
  maintenance script was called directly) with @codeCoverageIgnore
  comments.
* Some files use a different boilerplate code, however, these
  should also be marked as ignored for coverage for the same
  reason that coverage is not properly reported for files.

Bug: T371167
Change-Id: I32f5c6362dfb354149a48ce9c28da9a7fc494f7c
2024-08-27 13:22:29 +01:00
Amir Sarabadani
f33b5515b5 rdbms: Remove ILoadBalancer::getWriterIndex()
It doesn't need to have its own method, We can just use the constant
instead.

Bug: T363839
Change-Id: Iaec5a8e88dc3e5ae4eaf1f24aebf4c5d73f4b350
2024-06-03 14:17:57 -07:00
James D. Forrester
73874885ad Update references to renamed DatabaseMySQL class
Change-Id: Ic8d411152f5c031db6f30fc243af999f0ba5509e
2023-11-01 11:30:29 -04:00
Derick Alangi
74033c50cd maintenance: Begin using Maintenance::getServiceContainer()
Maintenance class provides a method for getting a fresh reference
of the MW services container instance. Let's make use of these in
maintenance scripts now that we have it.

NOTE: There are still some static methods like in refreshLinks.php
that makes use of services that we can't use this method for now.

Change-Id: Idba744057577896fc97c9ecf4724db27542bf01c
2023-09-04 10:39:58 +00:00
Amir Sarabadani
291258adfd rdbms: Merge DatabaseMysqli into DatabaseMysqlBase
This should have been done long time ago.

Change-Id: I4935b0483a566266e5bc99542478387304843624
2023-08-07 20:37:09 +02:00
daniel
367d6096cc Maintenance: use getArgs instead of mArgs.
Change-Id: If013a450c701efcf2bad7b12a253b455996a9685
2023-04-03 09:18:38 +00:00
Timo Tijhof
ebf9fa7059 maintenance/mysql: Add missing $serverInfo to fix --raw-host option
Follows-up I76f362d10818ec2.

Change-Id: I26ae8439c597d94ee5cfc8e50f3f67de07bb5c68
2023-01-18 20:27:27 +00:00
Timo Tijhof
ea15edfe51 maintenance/mysql.php: Add --raw-host parameter
This is to ease connecting to ParserCache and MainStash DB hosts, which
are configured directly with SqlBagOStuff instead of via $wgLBFactory,
thus they are considered unknown to the way this script worked before.

This new option can also be used to connect with regular core DB hosts
that e.g. are not yet pooled or are depooled for some reason.

Change-Id: I76f362d10818ec2ea4d8f3fbcb367835928be7de
2023-01-11 17:15:49 +00:00
jenkins-bot
7e2f3d9b52 Merge "rdbms: remove DB domain from more LoadBalancer methods" 2022-10-25 22:33:05 +00:00
Aaron Schulz
7c03ab8a18 rdbms: remove DB domain from more LoadBalancer methods
This affects:
* LoadBalancer::pickReaderIndex()
* LoadBalancer::getReaderIndex()

These callers should not need to care about a DB domain.

Change-Id: I4658faf31c4aad6c8a34ac80b3ca235370e0b09f
2022-10-25 18:59:07 +00:00
Tim Starling
0077c5da15 Use short array destructuring instead of list()
Introduced in PHP 7.1. Because it's shorter and looks nice.

I used regex replacement.

Change-Id: I0555e199d126cd44501f859cb4589f8bd49694da
2022-10-21 15:33:37 +11:00
Umherirrender
94792e97be maintenance: Cleanup use of exit in Maintenance::execute implementation
Returning void from execute() is success.
Returning true is success, false is failure with exit(1)
Using fatalError also using exit(1)

Change-Id: I1d40430ad6226e4aab8f0810b03ee1213282d123
2021-08-30 19:48:27 +00:00
James D. Forrester
719cf161f2 More master -> primary documentation and internal var renaming
Bug: T254646
Change-Id: I63cc8895033714bdfbf09aee933a8f0a43b387f3
2021-07-15 11:20:20 +01:00
Ammarpad
7974d518c5 MysqlMaintenance: Make use of Maintenance::fatalError
This simplifies the code by using base Maintenance class abstraction

Change-Id: Ib476101247cb8e1c9e0142a7d7acc29a89472bdf
2021-02-28 05:24:09 +00:00
daniel
3ba4e1a16f Fix --group option for mysql.php
Change-Id: I95b1923f94be680cfde7cbc7e4bee18ca6150442
2021-02-09 13:03:51 +01:00
Ariel T. Glenn
c9c2995a1a in deployment-prep some groups don't exist, permit scripts that use them to run
Example, there are dump scripts that use mysql.php with group=dump and these
work fine in production where the groups are, but die in deployment-prep.
Instead of dying, try to get any replica for the wiki and use that instead.

Bug: T269377
Change-Id: I54e295175a8a78d886b9390c15a0cacd16d41a15
2021-02-09 12:29:31 +02:00
James D. Forrester
4f2d1efdda Coding style: Auto-fix MediaWiki.Classes.UnsortedUseStatements.UnsortedUse
Change-Id: I94a0ae83c65e8ee419bbd1ae1e86ab21ed4d8210
2020-01-10 09:32:25 -08:00
Kunal Mehta
99007e96c7 Use namespaced IPUtils class
Change-Id: I047e099a93203a59093946d336a143d899d0271f
2020-01-01 02:36:49 -08:00
Thiemo Kreuz
9314453c93 Make use of the list() feature where it makes sense
This code is functionally identical, but less error prone (not so easy
to forget or mix these numerical indexes).

This patch happens to touch the Parser, which might be a bit scary. We
can remove this file from this patch if you prefer.

Change-Id: I8cbe3a9a6725d1c42b86e67678c1af15fbc5961a
2019-03-24 20:12:23 +00:00
Thiemo Kreuz
b7cd670cb7 maintenance: Remove unused code from several maintenance scripts
The most notable removal is done in the orphans script. This code was
really never used. Brion introduced it in 2005, already disabled.

I have all the respect for what Brion did. I just think it does not make
much sense to keep code around for so long if it does not work anyway,
and must be rewritten from scratch anyway now that we have multi-content
revisions and such.

Change-Id: I4e8050929f90e44a6e6051bf938993a8b0cdf649
2019-03-03 16:57:19 +00:00
Umherirrender
dffd07efe1 Fix param doc of MysqlMaintenance::runMysql
Add missing var name and type

Change-Id: I26c84723ee28b21f6b9b654d9507ed680c07055a
2018-08-06 10:58:53 +02:00
Tim Starling
9dcd605d13 In mysql.php ignore SIGINT
Every foreground process with the terminal open will receive SIGINT when
the interrupt key is pressed. But mysql handles SIGINT and kills the
running query, we don't want the wrapper to exit in that case. So,
ignore SIGINT while mysql is running. This is similar to how a shell
deals with this problem.

The other options would have been:

* Close the filehandles in PHP after forking (probably impossible)
* Use pcntl_exec() so that PHP isn't running (more complicated and
  requires the pcntl extension anyway)
* Clear termcap ISIG flag (probably would have broken mysql)

Bug: T199152
Change-Id: I7660cd24e036fbe3fe36d12563ffe1c1fa2360d0
2018-07-18 15:57:15 +10:00
Tim Starling
25503cf011 Maintenance script to wrap the mysql binary
This is more or less equivalent to the WMF shell script "sql", but it is
reasonably portable and written in a less hackish way.

Change-Id: I240d8d4e65ce46680cac257ee376a9b026c13f92
2018-05-31 15:42:51 +10:00