2 years agoMerge "maintenance: Script to rename titles for Unicode uppercasing changes"
jenkins-bot [Wed, 10 Jul 2019 06:42:16 +0000 (06:42 +0000)]
Merge "maintenance: Script to rename titles for Unicode uppercasing changes"

2 years agoMerge "Fix typo in table documentation"
jenkins-bot [Wed, 10 Jul 2019 02:38:59 +0000 (02:38 +0000)]
Merge "Fix typo in table documentation"

2 years agoMerge "Add safemode to special redirect parameters that are preserved"
jenkins-bot [Wed, 10 Jul 2019 01:40:38 +0000 (01:40 +0000)]
Merge "Add safemode to special redirect parameters that are preserved"

2 years agoMerge "config: Change ConfigException to extend LogicException"
jenkins-bot [Tue, 9 Jul 2019 22:14:49 +0000 (22:14 +0000)]
Merge "config: Change ConfigException to extend LogicException"

2 years agordbms: rename LoadMonitor "parent" field to "lb"
Aaron Schulz [Sat, 6 Jul 2019 03:29:39 +0000 (20:29 -0700)]
rdbms: rename LoadMonitor "parent" field to "lb"

Change-Id: I21246ca1ba00280839216b378899f2fcae266857

2 years agoMerge "Move unit tests, round III"
jenkins-bot [Tue, 9 Jul 2019 20:36:37 +0000 (20:36 +0000)]
Merge "Move unit tests, round III"

2 years agoMove unit tests, round III
Amir Sarabadani [Sun, 7 Jul 2019 23:28:25 +0000 (01:28 +0200)]
Move unit tests, round III

Depends-On: I16691fc8ac063705ba0c2bc63b96c4534ca8660b
Bug: T87781
Change-Id: I5e1ab06e3decef6cc6090551d54dc4314ab9314a

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Tue, 9 Jul 2019 19:57:36 +0000 (21:57 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: If1fe24c743ae95416ff816989ec15d4042612604

2 years agoMerge "Add fields and docs to WikiExporter"
jenkins-bot [Tue, 9 Jul 2019 19:52:07 +0000 (19:52 +0000)]
Merge "Add fields and docs to WikiExporter"

2 years agoMerge "rdbms: avoid recursion in LoadBalancer when the master has non-zero load"
jenkins-bot [Tue, 9 Jul 2019 19:48:58 +0000 (19:48 +0000)]
Merge "rdbms: avoid recursion in LoadBalancer when the master has non-zero load"

2 years agoMerge "jobqueue: mention more methods in RunnableJob to fix various IDEA warnings"
jenkins-bot [Tue, 9 Jul 2019 19:36:07 +0000 (19:36 +0000)]
Merge "jobqueue: mention more methods in RunnableJob to fix various IDEA warnings"

2 years agordbms: avoid recursion in LoadBalancer when the master has non-zero load
Aaron Schulz [Thu, 27 Jun 2019 18:52:04 +0000 (11:52 -0700)]
rdbms: avoid recursion in LoadBalancer when the master has non-zero load

Add and use IDatabase::getServerConnection() method to avoid loops caused
caused by pickReaderIndex() calling getConnection() for the master server.
That lead to getReadOnlyReason() triggering pickReaderIndex() again.

Make getLaggedReplicaMode() apply when the master has non-zero load and
the replicas are all lagged.

Remove "allReplicasDownMode" in favor of checking getExistingReaderIndex()
instead. This reduces the amount of state to keep track of a bit.

Follow-up to 95e2c990940f

Bug: T226678
Bug: T226770
Change-Id: Id932c3fcc00625e3960f76d054d38d9679d25ecc

2 years agoMerge "Unset all globals unneeded for unit tests, assert correct directory"
jenkins-bot [Tue, 9 Jul 2019 18:57:55 +0000 (18:57 +0000)]
Merge "Unset all globals unneeded for unit tests, assert correct directory"

2 years agoUnset all globals unneeded for unit tests, assert correct directory
Amir Sarabadani [Mon, 8 Jul 2019 13:25:31 +0000 (15:25 +0200)]
Unset all globals unneeded for unit tests, assert correct directory

* Unset globals to avoid tests that look like unit tests but actually rely on
* move some tests out of unit directory so that the test suite will pass.
* Assert that tests which extend MediaWikiUnitTestCase are in a directory with
  "/unit/" in its path name

Depends-On: I67b37b1bde94eaa3d4298d9bd98ac57995ce93b9
Depends-On: I90921679518ee95fe393f8b1bbd9134daf0ba032
Bug: T87781
Change-Id: I16691fc8ac063705ba0c2bc63b96c4534ca8660b

2 years agoMerge "objectcache: simplify WANObjectCache version handling code"
jenkins-bot [Tue, 9 Jul 2019 18:00:06 +0000 (18:00 +0000)]
Merge "objectcache: simplify WANObjectCache version handling code"

2 years agomaintenance: Script to rename titles for Unicode uppercasing changes
Brad Jorsch [Tue, 30 Apr 2019 15:33:06 +0000 (11:33 -0400)]
maintenance: Script to rename titles for Unicode uppercasing changes

This uses MovePage where possible to try to better keep data in sync.
Archives, log entries, and so on can't do that though.

The script skips User and User_talk pages for registered users, as
renaming the users is more complicated than makes sense to try to
implement here. Use something like Extension:Renameuser to clean those
up; this script can provide a list of user names affected.

Bug: T219279
Change-Id: I157577cb5bedfd347b808c254fb19ae8088818ab

2 years agoMerge "jobqueue: remove unused "aggregator" field reference in JobQueueFederated"
jenkins-bot [Tue, 9 Jul 2019 17:47:24 +0000 (17:47 +0000)]
Merge "jobqueue: remove unused "aggregator" field reference in JobQueueFederated"

2 years agoMerge "objectcache: deleteObjectsExpiringBefore() signature and code improvements"
jenkins-bot [Tue, 9 Jul 2019 17:47:17 +0000 (17:47 +0000)]
Merge "objectcache: deleteObjectsExpiringBefore() signature and code improvements"

2 years agoMerge "Run SpecialPageFatalTest with lang=qqx"
jenkins-bot [Tue, 9 Jul 2019 17:34:22 +0000 (17:34 +0000)]
Merge "Run SpecialPageFatalTest with lang=qqx"

2 years agoFix typo in table documentation
Thalia [Tue, 9 Jul 2019 17:31:21 +0000 (18:31 +0100)]
Fix typo in table documentation

Change-Id: Ifa9839567797921ca81938e5c77a1a53a42eef94

2 years agoMerge "Correct typo `notMinimumVerisonMessage'"
jenkins-bot [Tue, 9 Jul 2019 17:22:23 +0000 (17:22 +0000)]
Merge "Correct typo `notMinimumVerisonMessage'"

2 years agoMerge "Recognizes Open Document Database"
jenkins-bot [Tue, 9 Jul 2019 16:11:09 +0000 (16:11 +0000)]
Merge "Recognizes Open Document Database"

2 years agoMerge "Improve type hints in parser related classes"
jenkins-bot [Tue, 9 Jul 2019 15:11:57 +0000 (15:11 +0000)]
Merge "Improve type hints in parser related classes"

2 years agoRecognizes Open Document Database
Antoine Musso [Mon, 31 Dec 2018 17:30:00 +0000 (18:30 +0100)]
Recognizes Open Document Database

Mediawiki does not recognizes the mime type of an OpenOffice / Libre
Office Database Frontend Document and thus uses application/zip.

Our MimeAnalyzer::detectZipType() looks at the Zip files to detect known
signatures, however it is based on a reference from 2005 which did not
have the Database type yet.

OASIS Open Document Format v1.2 specify non normative MIME types, the
reference supposedly being the ones registered with the IANA, but we
have some dispredancy: ODF recommends 'base' while the IANA got
'database' registered: https://www.iana.org/assignments/media-types/

I supposed the format got approved as is, the Database mime type being
'recommended' probably because the IANA registration was pending.

Add the 'base' type which is being used by OpenOffice 3.x and later as
well as at least Libre Office 5.x.
Document my findings in code comments.
Add a test.

Bug: T35515
Change-Id: If0210a87067358612ecb8b3edd001fb05d01653d

2 years agoobjectcache: deleteObjectsExpiringBefore() signature and code improvements
Aaron Schulz [Tue, 9 Jul 2019 06:02:05 +0000 (23:02 -0700)]
objectcache: deleteObjectsExpiringBefore() signature and code improvements

Make the method use a callable type hint for $progressCallback.

Also make the SQLBagOStuff subclass shuffle() the array of server and table
indexes in case the limit keeps getting applied. Only garbage collect on DBs
that were going to be written to anyway. Also use DeferredUpdates if possible.

Change-Id: I723e6377c26750ff98e33f7ab103c6162ae65f43

2 years agoAdd fields and docs to WikiExporter
Daimona Eaytoy [Tue, 9 Jul 2019 08:33:03 +0000 (10:33 +0200)]
Add fields and docs to WikiExporter

Three fields were undeclared, thus raising some phan warnings.

Change-Id: Ib7934b507cb69d29a3d2422dadc24b12207a12ad

2 years agojobqueue: remove unused "aggregator" field reference in JobQueueFederated
Aaron Schulz [Tue, 9 Jul 2019 05:56:25 +0000 (22:56 -0700)]
jobqueue: remove unused "aggregator" field reference in JobQueueFederated

Change-Id: I355d1669a3845508d9be3ad11653f1b98446d9be

2 years agoobjectcache: simplify WANObjectCache version handling code
Aaron Schulz [Tue, 9 Jul 2019 01:17:04 +0000 (18:17 -0700)]
objectcache: simplify WANObjectCache version handling code

Make getWithSetCallback() check for unversioned values instead
of doing it in multiple isValid() checks.

Also rename some variables in doGetWithSetCallback() for clarity.

Change-Id: I27fe0b2351643009d090964b9b57fa82ba658235

2 years agoMerge "installer: Avoid <doclink/> hack for 'config-sidebar' rendering"
jenkins-bot [Mon, 8 Jul 2019 23:53:10 +0000 (23:53 +0000)]
Merge "installer: Avoid <doclink/> hack for 'config-sidebar' rendering"

2 years agoMerge "installer: Convert <downloadlink/> hack to raw message param"
jenkins-bot [Mon, 8 Jul 2019 23:51:45 +0000 (23:51 +0000)]
Merge "installer: Convert <downloadlink/> hack to raw message param"

2 years agoMerge "installer: Call getInfoBox() with raw wikitext, not transformed text"
jenkins-bot [Mon, 8 Jul 2019 23:51:38 +0000 (23:51 +0000)]
Merge "installer: Call getInfoBox() with raw wikitext, not transformed text"

2 years agoMerge "installer: Fix Html::infoBox param docs and mark as internal"
jenkins-bot [Mon, 8 Jul 2019 23:49:14 +0000 (23:49 +0000)]
Merge "installer: Fix Html::infoBox param docs and mark as internal"

2 years agoMerge "build: Remove reference of non-existent "Fuzz" and "Stub" PHPUnit groups"
jenkins-bot [Mon, 8 Jul 2019 23:47:49 +0000 (23:47 +0000)]
Merge "build: Remove reference of non-existent "Fuzz" and "Stub" PHPUnit groups"

2 years agoMerge "build: Remove redundant 'vendor/bin' prefix from composer commands"
jenkins-bot [Mon, 8 Jul 2019 23:44:40 +0000 (23:44 +0000)]
Merge "build: Remove redundant 'vendor/bin' prefix from composer commands"

2 years agoMerge "mediawiki.util: Simplify test-only setOptions methods"
jenkins-bot [Mon, 8 Jul 2019 23:21:26 +0000 (23:21 +0000)]
Merge "mediawiki.util: Simplify test-only setOptions methods"

2 years agoMerge "lockmanager: tweak FSLockManager permission handling in doSingleLock()"
jenkins-bot [Mon, 8 Jul 2019 23:07:09 +0000 (23:07 +0000)]
Merge "lockmanager: tweak FSLockManager permission handling in doSingleLock()"

2 years agoMerge "objectcache: tweak SqlBagOStuff purging to happen on write only"
jenkins-bot [Mon, 8 Jul 2019 23:07:02 +0000 (23:07 +0000)]
Merge "objectcache: tweak SqlBagOStuff purging to happen on write only"

2 years agoMerge "objectcache: add IStoreKeyEncoder interface for key generation helper methods"
jenkins-bot [Mon, 8 Jul 2019 22:48:55 +0000 (22:48 +0000)]
Merge "objectcache: add IStoreKeyEncoder interface for key generation helper methods"

2 years agoMerge "Fix IDEA warnings in Xhprof class"
jenkins-bot [Mon, 8 Jul 2019 22:44:41 +0000 (22:44 +0000)]
Merge "Fix IDEA warnings in Xhprof class"

2 years agoobjectcache: add IStoreKeyEncoder interface for key generation helper methods
Aaron Schulz [Mon, 8 Jul 2019 19:12:16 +0000 (12:12 -0700)]
objectcache: add IStoreKeyEncoder interface for key generation helper methods

If a key is stored in both BagOStuff and WANObjectCache, it useful to have
one common method for generating the cache and storage keys.

Change-Id: I8b77651746a55e8a98a79db298226e334d15a494

2 years agoFix IDEA warnings in Xhprof class
Aaron Schulz [Mon, 8 Jul 2019 21:54:27 +0000 (14:54 -0700)]
Fix IDEA warnings in Xhprof class

Change-Id: Ie4bb1792e45380240f2507e3aca25dc94b78f57e

2 years agoMerge "Remove `@author Timo Tijhof` from various file headers"
jenkins-bot [Mon, 8 Jul 2019 22:10:41 +0000 (22:10 +0000)]
Merge "Remove `@author Timo Tijhof` from various file headers"

2 years agoMerge "entrypoint: Avoid random Doxygen block from api.php and opensearch_desc.php"
jenkins-bot [Mon, 8 Jul 2019 22:07:28 +0000 (22:07 +0000)]
Merge "entrypoint: Avoid random Doxygen block from api.php and opensearch_desc.php"

2 years agobuild: Remove reference of non-existent "Fuzz" and "Stub" PHPUnit groups
Timo Tijhof [Mon, 8 Jul 2019 22:03:13 +0000 (23:03 +0100)]
build: Remove reference of non-existent "Fuzz" and "Stub" PHPUnit groups

These were removed from the phpunit.xml file recently (after having
been unused for many years), but between the revert and resplit
of the recent MediaWikiTestCase refactor, that change was lost
and the group exclusion re-introduced.

This removes it again, following 214750d8d224fc7.

Change-Id: I9448854e5f1587b1083e78f61ef8b520722ad2b9

2 years agobuild: Remove redundant 'vendor/bin' prefix from composer commands
Timo Tijhof [Mon, 8 Jul 2019 21:59:19 +0000 (22:59 +0100)]
build: Remove redundant 'vendor/bin' prefix from composer commands

Follows 214750d8d224. This isn't needed because they run with
that directory already in their PATH.

Change-Id: I855bbe53c2b5c87afa425b7b6d3ec920c452cc99

2 years agoRemove `@author Timo Tijhof` from various file headers
Timo Tijhof [Mon, 8 Jul 2019 21:31:25 +0000 (22:31 +0100)]
Remove `@author Timo Tijhof` from various file headers

Also remove a few redundant file-level descriptions in favour
of their class entity describing the same already.

Change-Id: I1a43fc402b5bd106931062a399952ba1e48beb48

2 years agomediawiki.util: Simplify test-only setOptions methods
Timo Tijhof [Mon, 8 Jul 2019 21:54:53 +0000 (22:54 +0100)]
mediawiki.util: Simplify test-only setOptions methods

Follows-up 1c7c9bdf1f.

* Define the method only in test context, instead of
  a run-time check.

* Return the old value, and re-use function for restoring
  the result afterwards.

* Make the test define its options by default, so at to not
  rely on local-wiki defaults in any way.

Change-Id: I71e92d5b9ee789b594e6e64ca3e425583fc1ee1c

2 years agoresourceloader: Remove 'user.groups' module alias
Timo Tijhof [Mon, 8 Jul 2019 21:20:28 +0000 (22:20 +0100)]
resourceloader: Remove 'user.groups' module alias

Deprecated since MediaWiki 1.28. Follows 06ab9c0942f66.

Change-Id: Iedaa61d82b72ccf852975057d3d88f2bf7ddead6

2 years agoentrypoint: Avoid random Doxygen block from api.php and opensearch_desc.php
Timo Tijhof [Mon, 8 Jul 2019 20:24:45 +0000 (21:24 +0100)]
entrypoint: Avoid random Doxygen block from api.php and opensearch_desc.php

These two entry points have themselves partly indexed by Doxygen
in a very strange way where these two comments cause part of an
if-statement to be seen as the name of a local variable.
Probably due to some kind of bad interaction with the
maintenance/mwdoc-filter.php filter applied to the file before
it gets indexed.

Fix it for now by avoiding use of /** blocks for something that
isn't a class, function, class member or documented global var.

Change-Id: I4903069e704c3283e6ec7a39999a489d0117cc71

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 8 Jul 2019 20:14:36 +0000 (22:14 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I608a6689cf784c6826bd45e9836d3ed00a2f1602

2 years agoMerge "rdbms: normalize Database/LBFactory logging and add snapshot flushing warnings"
jenkins-bot [Mon, 8 Jul 2019 18:53:38 +0000 (18:53 +0000)]
Merge "rdbms: normalize Database/LBFactory logging and add snapshot flushing warnings"

2 years agoMake MSCompoundFileReader::readFile platform-agnostic
Máté Szabó [Mon, 8 Jul 2019 16:05:22 +0000 (18:05 +0200)]
Make MSCompoundFileReader::readFile platform-agnostic

MSCompoundFileReader::readFile uses iconv to convert information
given in UTF-16 character set with little-endian byte order to
the UTF-8 character set. The input string has no BOM and the byte order
is not explicitly given, causing iconv to try to guess the byte order
based on the host operating system. This causes the method to return
different results for the same file in different environments.

This patch explicitly provides the byte order for the input to be
converted (UTF-16LE) to ensure portability and predictability.

As part of this, move MSCompoundFileReaderTest into the unit test tree.

Bug: T225019
Change-Id: I62154897d303b28c288c3a4f2f5456bedcc81852

2 years agoMerge "Selenium: replace UserLoginPage with BlankPage where possible"
jenkins-bot [Mon, 8 Jul 2019 17:00:13 +0000 (17:00 +0000)]
Merge "Selenium: replace UserLoginPage with BlankPage where possible"

2 years agoMerge "build: use the latest webdriverio 4.x related packages"
jenkins-bot [Mon, 8 Jul 2019 15:59:18 +0000 (15:59 +0000)]
Merge "build: use the latest webdriverio 4.x related packages"

2 years agoMerge "Improve specialmute-email-footer description"
jenkins-bot [Mon, 8 Jul 2019 15:50:44 +0000 (15:50 +0000)]
Merge "Improve specialmute-email-footer description"

2 years agobuild: use the latest webdriverio 4.x related packages
Željko Filipin [Mon, 8 Jul 2019 13:29:06 +0000 (15:29 +0200)]
build: use the latest webdriverio 4.x related packages

Updating packages removes dependency on cryptiles. We were using
version 3.1.4 that had a vulnerability.

Bug: T226586
Change-Id: Idccc7f418ed6fce7452a6f0d403477953448a541

2 years agoImprove specialmute-email-footer description
Dayllan Maza [Mon, 8 Jul 2019 14:25:11 +0000 (10:25 -0400)]
Improve specialmute-email-footer description

Change-Id: I058d3477b0707e2fbf09a94517a6005e0694dbae

2 years agoSelenium: replace UserLoginPage with BlankPage where possible
Željko Filipin [Fri, 10 May 2019 15:56:42 +0000 (17:56 +0200)]
Selenium: replace UserLoginPage with BlankPage where possible

When using local storage, any page has to be open. UserLoginPage is usually used.
BlankPage should be slightly faster to load. It also makes it more clear than
any page would do the job.

Change-Id: I50b23993065ad6b093a6cc951d00b0bf7a3d5e68

2 years agoRun SpecialPageFatalTest with lang=qqx
Amir Sarabadani [Mon, 8 Jul 2019 12:52:06 +0000 (14:52 +0200)]
Run SpecialPageFatalTest with lang=qqx

SpecialPageFatalTest:testSpecialPageDoesNotFatal is one of the slowest
tests (specially running Special:Version) due to the fact that it needs
to translate so many message keys.

3206ms to run SpecialPageFatalTest:testSpecialPageDoesNotFatal with data set "Version"

Running with lang=qqx would ensure that the special doesn't fatal but also avoid
unnecessary message translations

Change-Id: I8ff715ac539e93915c98f7209523df1b3ea3a7e8

2 years agoMerge "Move unit tests FormatJsonTest.php to a dedicated file in unit tests"
jenkins-bot [Mon, 8 Jul 2019 12:49:17 +0000 (12:49 +0000)]
Merge "Move unit tests FormatJsonTest.php to a dedicated file in unit tests"

2 years agoMerge "Split SanitizerTest to unit and integration tests"
jenkins-bot [Mon, 8 Jul 2019 12:40:50 +0000 (12:40 +0000)]
Merge "Split SanitizerTest to unit and integration tests"

2 years agoSplit SanitizerTest to unit and integration tests
Amir Sarabadani [Mon, 8 Jul 2019 00:05:57 +0000 (02:05 +0200)]
Split SanitizerTest to unit and integration tests

Out of 150 tests of SanitizerTest.php, 100 of them are pure unit tests
they are moved to the new file in the new structure, the rest stay

Change-Id: I366d37607abff4bcd624a56fb8b2299729fbc088

2 years agoMerge "Reorganize testsuites"
jenkins-bot [Mon, 8 Jul 2019 07:47:41 +0000 (07:47 +0000)]
Merge "Reorganize testsuites"

2 years agoMerge "Change the autonym of Minangkabau from "Baso Minangkabau" to "Minangkabau""
jenkins-bot [Mon, 8 Jul 2019 06:31:42 +0000 (06:31 +0000)]
Merge "Change the autonym of Minangkabau from "Baso Minangkabau" to "Minangkabau""

2 years agoMerge "Tell users how they can force a maintenance script to run again."
jenkins-bot [Mon, 8 Jul 2019 05:44:07 +0000 (05:44 +0000)]
Merge "Tell users how they can force a maintenance script to run again."

2 years agoChange the autonym of Minangkabau from "Baso Minangkabau" to "Minangkabau"
Mahuton [Mon, 8 Jul 2019 05:04:17 +0000 (07:04 +0200)]
Change the autonym of Minangkabau from "Baso Minangkabau" to "Minangkabau"

Change requested on the Minangkabau Wikipedia village pump

Bug: T224806
Change-Id: I40ddc71f4f6ab73b6d4c4f19ec57bc9c9e221b14

2 years agoCorrect typo `notMinimumVerisonMessage'
DannyS712 [Mon, 8 Jul 2019 04:39:24 +0000 (04:39 +0000)]
Correct typo `notMinimumVerisonMessage'

Bug: T224449
Change-Id: I4d76f900770f74ce668abf71ea5e7a9f167f5950

2 years agoMove unit tests FormatJsonTest.php to a dedicated file in unit tests
Amir Sarabadani [Sun, 7 Jul 2019 22:23:30 +0000 (00:23 +0200)]
Move unit tests FormatJsonTest.php to a dedicated file in unit tests

Out of 140 tests of this file, 131 one of them are pure unit test
Let's keep the 9 in the original file and move the rest

Bug: T87781
Change-Id: I86dfe17f794c615048b3c20487b0e84d38d13b93

2 years agoReorganize testsuites
Kosta Harlan [Fri, 5 Jul 2019 15:33:08 +0000 (11:33 -0400)]
Reorganize testsuites

The idea is that `vendor/bin/phpunit` could run all of the tests contained in
core + extensions + skins with no overlap, but that we can also provide
granularity for CI which wants to run some testsuites (e.g. core:unit and
core:integration) before extensions/skins, as well as running unit before
integration tests.

Bug: T87781
Change-Id: I2fb57f4a9a58ec7a4042d9cc1821cc484661a6b9

2 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sun, 7 Jul 2019 20:08:26 +0000 (22:08 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I3f6364eed16e0f0479410147d289b4197c563643

2 years agordbms: normalize Database/LBFactory logging and add snapshot flushing warnings
Aaron Schulz [Sat, 29 Jun 2019 03:21:28 +0000 (20:21 -0700)]
rdbms: normalize Database/LBFactory logging and add snapshot flushing warnings

Make flushSnapshot() logging more detailed and check for explicit transaction
rounds. Also removing periods and trailing newlines from log/exception messages.

Change-Id: I0f6520f563680ab3a65b6338ced59ba25a2ec7b5

2 years agolockmanager: tweak FSLockManager permission handling in doSingleLock()
Aaron Schulz [Wed, 3 Jul 2019 10:38:48 +0000 (03:38 -0700)]
lockmanager: tweak FSLockManager permission handling in doSingleLock()

Change-Id: Ia0070cc727ca622e127456ddb0e39d007e19f169

2 years agoMerge "Don't process "all" option in Html::namespaceSelectorOptions"
jenkins-bot [Sat, 6 Jul 2019 15:17:54 +0000 (15:17 +0000)]
Merge "Don't process "all" option in Html::namespaceSelectorOptions"

2 years agoobjectcache: tweak SqlBagOStuff purging to happen on write only
Aaron Schulz [Sat, 6 Jul 2019 07:02:13 +0000 (00:02 -0700)]
objectcache: tweak SqlBagOStuff purging to happen on write only

Also adjust the frequency default and put in a 100 row limit for
randomized purges. This adds a $limit parameter to the BagOStuff
method deleteObjectsExpiringBefore().

Change-Id: I66bfcc67e8e118f8c659dbbee13d54bf2cd937f5

2 years agojobqueue: mention more methods in RunnableJob to fix various IDEA warnings
Aaron Schulz [Sat, 6 Jul 2019 04:02:17 +0000 (21:02 -0700)]
jobqueue: mention more methods in RunnableJob to fix various IDEA warnings

Change-Id: I156411062ae7831c935869d226fc4934bde55107

2 years agoMerge "OutputPage: Load html5shiv without indirection of load.php"
jenkins-bot [Sat, 6 Jul 2019 01:00:54 +0000 (01:00 +0000)]
Merge "OutputPage: Load html5shiv without indirection of load.php"

2 years agoOutputPage: Load html5shiv without indirection of load.php
Timo Tijhof [Thu, 4 Jul 2019 15:54:24 +0000 (16:54 +0100)]
OutputPage: Load html5shiv without indirection of load.php

This library was introduced in 3a30e03645f, to make sure Grade C
stylesheets that apply to HTML5 elements that older browsers might
not know yet, work as expected in old IE.

It originally committed a minified version and loaded it directly
as an HTML script tag in a conditional comment. This had minimal
impact on anything else, and was easy to maintain.

In 68237fb1a74, this was changed to commit the unminified version
instead because Debian maintainers don't like packaging software
that contain minified files, despite being a simple file,
unmodified from the original (upstream publishes it in minified
form, with license header), published under a compatible free
license, and embedded in a license-compliant manner. We then
registered it as an unused ResourceLoader module, to be minified
on-the-fly at run-time.

Support for "server-registered client-unregistered" modules was
removed last week in c554ee8e64e because nothing needed it
anymore (except html5shiv apparently), which resulted in this
module being registered client-side on all page views for all
users (in latest master). This doesn't break anything, but it
is a regression performance-wise.

Restore this by (mostly) going to how it was before: A simple static
file, committed to Git, served as-is. Not related to, served by,
pulled through, nor registered with, ResourceLoader in any way.

Only difference with the original approach is that it is no longer
minified, which means a few more bytes transferred on old IE page
views, which is considered an acceptable compromise.

Bug: T201483
Change-Id: Ib0020b6bd015679b61f63eaa8109ed9b83d8ad15

2 years agoMerge "Fix type hints in jobqueue related classes"
jenkins-bot [Fri, 5 Jul 2019 23:10:40 +0000 (23:10 +0000)]
Merge "Fix type hints in jobqueue related classes"

2 years agoMerge "Adjust type hints in file related classes"
jenkins-bot [Fri, 5 Jul 2019 23:10:34 +0000 (23:10 +0000)]
Merge "Adjust type hints in file related classes"

2 years agoMerge "rdbms: clean up $groups logic in LoadBalancer and expand comments"
jenkins-bot [Fri, 5 Jul 2019 22:00:09 +0000 (22:00 +0000)]
Merge "rdbms: clean up $groups logic in LoadBalancer and expand comments"

2 years agoMerge "Adjust type hints in htmlform related classes"
jenkins-bot [Fri, 5 Jul 2019 21:32:55 +0000 (21:32 +0000)]
Merge "Adjust type hints in htmlform related classes"

2 years agoImprove type hints in parser related classes
Umherirrender [Mon, 3 Jun 2019 16:08:04 +0000 (18:08 +0200)]
Improve type hints in parser related classes

Change-Id: Ia07a2eb32894f96b195fa3189fb5f617e68f2581

2 years agoMerge "build: Update eslint-config-wikimedia to 0.13.0"
jenkins-bot [Fri, 5 Jul 2019 21:18:30 +0000 (21:18 +0000)]
Merge "build: Update eslint-config-wikimedia to 0.13.0"

2 years agoMerge "Pass int for argument to ArchivedFile"
jenkins-bot [Fri, 5 Jul 2019 21:02:51 +0000 (21:02 +0000)]
Merge "Pass int for argument to ArchivedFile"

2 years agobuild: Update eslint-config-wikimedia to 0.13.0
Ed Sanders [Fri, 5 Jul 2019 19:38:29 +0000 (20:38 +0100)]
build: Update eslint-config-wikimedia to 0.13.0

Change-Id: I7df5840bc97f8bbcd8cfc875c2b48b3061ef2c9e

2 years agoFix type hints in jobqueue related classes
Umherirrender [Fri, 5 Jul 2019 20:20:56 +0000 (22:20 +0200)]
Fix type hints in jobqueue related classes

JobQueueGroup is giving RunnableJob on pop(), so it should take the same
type for ack() and deduplicateRootJob()
JobQueue::ack alsready accept the interface

Also change to RunnableJob in JobRunner to work with the type from the
job queue

Change-Id: I7b09586cff8affabe807ee16e80d04f5137dce45

2 years agoPass int for argument to ArchivedFile
Umherirrender [Fri, 5 Jul 2019 20:17:53 +0000 (22:17 +0200)]
Pass int for argument to ArchivedFile

ArchivedFile constructor is complex, but use the correct type for
unneeded arguments

Change-Id: I111daf7fb69d4448d8a362ba70735f3312869c7f

2 years agoMerge "Bidi isolate user names in block error paramters"
jenkins-bot [Fri, 5 Jul 2019 19:25:38 +0000 (19:25 +0000)]
Merge "Bidi isolate user names in block error paramters"

2 years agoinstaller: Avoid <doclink/> hack for 'config-sidebar' rendering
Timo Tijhof [Thu, 4 Jul 2019 22:00:48 +0000 (23:00 +0100)]
installer: Avoid <doclink/> hack for 'config-sidebar' rendering

Use separate messages for the link labels instead.

Bug: T227297
Change-Id: I2fda6ef98117781231a0d42c039d333ef829ea98

2 years agoinstaller: Convert <downloadlink/> hack to raw message param
Timo Tijhof [Thu, 4 Jul 2019 21:23:11 +0000 (22:23 +0100)]
installer: Convert <downloadlink/> hack to raw message param

Bug: T227297
Change-Id: I9a50342aa0c9525893085e1b8d428556f0262f5c

2 years agoinstaller: Call getInfoBox() with raw wikitext, not transformed text
Timo Tijhof [Thu, 4 Jul 2019 21:17:16 +0000 (22:17 +0100)]
installer: Call getInfoBox() with raw wikitext, not transformed text

This will be run through the parser by getInfoBox(), and is documented
as taking raw wikitext, such as from Message::plain(). Calling with
text() is needlessly slower and may product incorrect results due to
applying transformations twice.

Also fix indentation for a wfMessage() call that was confusing
previously, seemingly passing 5 parameters with $4 being '<downloadlink/>'
when actually it is $3 and the line above continues a previous parameter.

Bug: T227297
Change-Id: Ice432e08b1c5f52db097f7c9f4fe6d69e1b04c2d

2 years agoinstaller: Fix Html::infoBox param docs and mark as internal
Timo Tijhof [Thu, 4 Jul 2019 21:13:18 +0000 (22:13 +0100)]
installer: Fix Html::infoBox param docs and mark as internal

This method is very specific to the installer and is only used in one
place, in WebInstaller, and should probably be moved there.

For now, make its documentation less confusing, more correct, and
mark it as `@internal`, this is not a supported public interface.

Bug: T227297
Change-Id: I8902fe34b80c5152bfd37e9c24427ad48b5f4167

2 years agoAdjust type hints in file related classes
Umherirrender [Mon, 1 Jul 2019 20:30:14 +0000 (22:30 +0200)]
Adjust type hints in file related classes

Change-Id: I3811e0d9a3297293bc52c1a98f3e8fdb5a3d0e85

2 years agoAdjust type hints in htmlform related classes
Umherirrender [Tue, 18 Jun 2019 20:16:31 +0000 (22:16 +0200)]
Adjust type hints in htmlform related classes

The return type of HTMLFormField::loadDataFromRequest to mixed
Some sub classes returning arrays or bools, not everytime strings

HTMLCheckField is working with arrays, so also allow array on getTableRow

Change-Id: I076feea76d8e296f27c8a9fb4cbd9368584ba187

2 years agoMerge "PopulateContentTables: compute sha1 and length if needed."
jenkins-bot [Fri, 5 Jul 2019 15:40:45 +0000 (15:40 +0000)]
Merge "PopulateContentTables: compute sha1 and length if needed."

2 years agoMerge "Add "help" link to Special:Unblock"
jenkins-bot [Fri, 5 Jul 2019 15:40:38 +0000 (15:40 +0000)]
Merge "Add "help" link to Special:Unblock"

2 years agoMerge "Follow-up 9c9cfa2ec3d7: fix non-session entry point error"
jenkins-bot [Fri, 5 Jul 2019 15:02:57 +0000 (15:02 +0000)]
Merge "Follow-up 9c9cfa2ec3d7: fix non-session entry point error"

2 years agoBidi isolate user names in block error paramters
Thalia [Thu, 27 Jun 2019 18:24:52 +0000 (19:24 +0100)]
Bidi isolate user names in block error paramters

This fixes parameters returned by AbstractBlock::getBlockErrorParams,
but not those from ApiBlockInfoTrait.

Change-Id: I122017808766de1e9a9035f2f39a7b08607e56c1

2 years agoPopulateContentTables: compute sha1 and length if needed.
daniel [Thu, 4 Jul 2019 11:54:20 +0000 (13:54 +0200)]
PopulateContentTables: compute sha1 and length if needed.

PopulateContentTables tries to copy rev_sha1 to content_sha1 and rev_len
to content_size, but when updating directly from on old version of
MediaWiki, these fields may be empty or NULL. To ensure that the content
table gets the correct value, we have to compute them on the fly.

Note that PopulateRevisionSha1 runs *after* the normal database updates.
So even though it was introduced in 1.19, it will run after the schema
updates for 1.32, which include PopulateContentTables. This means that
PopulateContentTables can't rely on rev_sha1 to have been filled in
already. But per I0c22286a16d7b, it also means that PopulateRevisionSha1
can make use of the hash in content_sha1 instead of re-calculating.

Bug: T217831
Bug: T200653
Change-Id: I69e91a812ad5f038562220b02c3634589667cdb6

2 years agoTell users how they can force a maintenance script to run again.
daniel [Fri, 5 Jul 2019 13:20:02 +0000 (15:20 +0200)]
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