lhc/web/wiklou.git
5 years agoMerge "debug: Disable flaky CeeFormatterTest"
jenkins-bot [Tue, 19 Mar 2019 16:39:34 +0000 (16:39 +0000)]
Merge "debug: Disable flaky CeeFormatterTest"

5 years agoMerge "Sync up with Parsoid parserTests.txt"
jenkins-bot [Tue, 19 Mar 2019 16:25:26 +0000 (16:25 +0000)]
Merge "Sync up with Parsoid parserTests.txt"

5 years agoMerge "rdbms: add bad mysql table/column codes to wasKnownStatementRollbackError()"
jenkins-bot [Tue, 19 Mar 2019 15:36:09 +0000 (15:36 +0000)]
Merge "rdbms: add bad mysql table/column codes to wasKnownStatementRollbackError()"

5 years agoSync up with Parsoid parserTests.txt
Arlo Breault [Tue, 19 Mar 2019 15:33:40 +0000 (11:33 -0400)]
Sync up with Parsoid parserTests.txt

This now aligns with Parsoid commit 94b8b491098f882582f372218df07f5b68f4eba1

Change-Id: I760e73c98109047e20e4c85b97853b9b3f50b090

5 years agodebug: Disable flaky CeeFormatterTest
Timo Tijhof [Tue, 19 Mar 2019 15:25:18 +0000 (15:25 +0000)]
debug: Disable flaky CeeFormatterTest

Follows-up 667b17a3193f0af0.

Bug: T218688
Change-Id: I70afc5b9c41ae8d593d71f27bc55b424d9de260c

5 years agoMerge "Revert "Split out new RefreshSecondaryDataUpdate class""
jenkins-bot [Tue, 19 Mar 2019 15:06:46 +0000 (15:06 +0000)]
Merge "Revert "Split out new RefreshSecondaryDataUpdate class""

5 years agoRevert "Split out new RefreshSecondaryDataUpdate class"
Timo Tijhof [Tue, 19 Mar 2019 03:01:43 +0000 (03:01 +0000)]
Revert "Split out new RefreshSecondaryDataUpdate class"

This reverts commits a1f7fd3adaa30ef02cd018901.

Bug: T218456
Change-Id: I9bbea3d13460ed44755d77fc61ff23fb906cf71e

5 years agoMerge "parser: Rename $lastSection to $lastParagraph"
jenkins-bot [Tue, 19 Mar 2019 14:37:54 +0000 (14:37 +0000)]
Merge "parser: Rename $lastSection to $lastParagraph"

5 years agoMerge "Revert "Temporarily trim leading/trailing whitespace from parser test clauses""
jenkins-bot [Tue, 19 Mar 2019 14:37:48 +0000 (14:37 +0000)]
Merge "Revert "Temporarily trim leading/trailing whitespace from parser test clauses""

5 years agoMerge "parser: Omit outputting newline after final line"
jenkins-bot [Tue, 19 Mar 2019 14:37:16 +0000 (14:37 +0000)]
Merge "parser: Omit outputting newline after final line"

5 years agoMerge "Remove rollback confirmation user preference"
jenkins-bot [Tue, 19 Mar 2019 14:36:36 +0000 (14:36 +0000)]
Merge "Remove rollback confirmation user preference"

5 years agoMerge "parser: Remove trailing newline after prefixes have been cleared"
jenkins-bot [Tue, 19 Mar 2019 14:18:30 +0000 (14:18 +0000)]
Merge "parser: Remove trailing newline after prefixes have been cleared"

5 years agoMerge "Temporarily trim leading/trailing whitespace from parser test clauses"
jenkins-bot [Tue, 19 Mar 2019 14:18:22 +0000 (14:18 +0000)]
Merge "Temporarily trim leading/trailing whitespace from parser test clauses"

5 years agoRemove rollback confirmation user preference
Tim Eulitz [Mon, 18 Mar 2019 13:40:09 +0000 (14:40 +0100)]
Remove rollback confirmation user preference

Due to a delay in the rollout of this feature, this part of the code has
to be temporarily removed again to prevent an unused setting from
popping up in the user settings.

Bug: T218556
Change-Id: I0f4e822fc25fddc2bc3c0b55b0792799a1e4c4ba

5 years agoMerge "Improve RemexStripTagHandler working with tables"
jenkins-bot [Tue, 19 Mar 2019 04:25:47 +0000 (04:25 +0000)]
Merge "Improve RemexStripTagHandler working with tables"

5 years agordbms: add bad mysql table/column codes to wasKnownStatementRollbackError()
Aaron Schulz [Tue, 19 Mar 2019 03:22:59 +0000 (20:22 -0700)]
rdbms: add bad mysql table/column codes to wasKnownStatementRollbackError()

Change-Id: I826681ae7582b6f8af09b1d5ed08378532af2556

5 years agoMerge "Use READ_EXCLUSIVE in SpecialConfirmEmail::attemptConfirm"
jenkins-bot [Tue, 19 Mar 2019 02:30:21 +0000 (02:30 +0000)]
Merge "Use READ_EXCLUSIVE in SpecialConfirmEmail::attemptConfirm"

5 years agoMerge "rdbms: document that IDatabase::selectFieldValues() keeps the order"
jenkins-bot [Tue, 19 Mar 2019 02:30:11 +0000 (02:30 +0000)]
Merge "rdbms: document that IDatabase::selectFieldValues() keeps the order"

5 years agoMerge "Make BagOStuff::incr abstract to discourage bad implementations"
jenkins-bot [Tue, 19 Mar 2019 01:45:48 +0000 (01:45 +0000)]
Merge "Make BagOStuff::incr abstract to discourage bad implementations"

5 years agoMerge "Define ManualLogEntryBeforePublish hook"
jenkins-bot [Tue, 19 Mar 2019 00:09:28 +0000 (00:09 +0000)]
Merge "Define ManualLogEntryBeforePublish hook"

5 years agoMerge "Replace $wgUser with RequestContext::getUser in User::getBlockedStatus"
jenkins-bot [Mon, 18 Mar 2019 23:52:33 +0000 (23:52 +0000)]
Merge "Replace $wgUser with RequestContext::getUser in User::getBlockedStatus"

5 years agoDefine ManualLogEntryBeforePublish hook
Piotr Miazga [Wed, 13 Mar 2019 20:16:39 +0000 (21:16 +0100)]
Define ManualLogEntryBeforePublish hook

This hook is required by extensions like MobileFrontend to tag
log entries when actions are performed on the mobile web.

There is a possibility to tag log entries by using
'RecentChange_save' hook, but that works only when the log entry
is published to 'rc' or 'rcandudp'. This means, that tagged log
will appear also on the Special:RecentChanges page which is something
what extensions like 'Thanks' wants to avoid.

In the future we should avoid using 'RecentChange_save' as an
indirect way to tag log entries, and use the
'ManualLogEntryBeforePublish' hook instead.

To cover ourselves in the future, instead of passing &$tags only,
we pass the $this (the log entry object) so extensions can perform
additional checks before using setTags().

Bug: T215675
Change-Id: I747eded4bc5406cd5d4676fc93b0bb55c99f9a4d

5 years agoReplace $wgUser with RequestContext::getUser in User::getBlockedStatus
Gergő Tisza [Mon, 18 Mar 2019 21:50:48 +0000 (14:50 -0700)]
Replace $wgUser with RequestContext::getUser in User::getBlockedStatus

$wgUser is not guaranteed to exist until MediaWiki has been fully
initialized; block status needs to be checked early on for
authentication-related permission checks.

Bug: T218608
Change-Id: I16315c071855024bc0412d5360c95f843420d9a9

5 years agoMake BagOStuff::incr abstract to discourage bad implementations
Aaron Schulz [Mon, 18 Mar 2019 23:09:26 +0000 (16:09 -0700)]
Make BagOStuff::incr abstract to discourage bad implementations

Callers should really use atomic TTL-preserving implementations
so that calling code works correctly. The old default base class
code did not do either.

Change-Id: Icf66db05e48b86c8d481dc08dc9041bd1fa6dbe9

5 years agoMerge "Make DeferredUpdates enqueue updates that failed to run when possible"
jenkins-bot [Mon, 18 Mar 2019 23:02:58 +0000 (23:02 +0000)]
Merge "Make DeferredUpdates enqueue updates that failed to run when possible"

5 years agoMerge "Provide a Taggable interface"
jenkins-bot [Mon, 18 Mar 2019 22:47:44 +0000 (22:47 +0000)]
Merge "Provide a Taggable interface"

5 years agoProvide a Taggable interface
Piotr Miazga [Thu, 28 Feb 2019 17:24:10 +0000 (18:24 +0100)]
Provide a Taggable interface

The Taggable interface defines how to tag objects in MediaWiki.
For now there are only two Taggable objects:
 - RecentChange
 - ManualLogEntries

This interface should be used in places where we want to optionally
tag things, for example:
 We want to tag all mobile web actions with 'web mobile edit'.

With that interface, we will be able to expect a Taggable object,
and call `addTags()` when we need to, without having a special check
to verify is it RecentChange, or is it ManualLogEntry. We will only
expect a Taggable object.

Additionally, added @deprecated note to ManualLogEntries::setTags()
as each call to this method will override all previous tags. This
action can be harmfull to parts of code that conditionally add tags.
If object was tagged in some way, we should preserve those tags.

If there are any special cases, where we want to override all tags,
we should provide `resetTags()` method.

Bug: T215675
Change-Id: Ia4c019db8ca6f37ce0f86bf7d134d6f1713daf56

5 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 18 Mar 2019 21:55:09 +0000 (22:55 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I7dea9fd7d9892ea16a33bf020f22957dbe29549c

5 years agoMerge "Mixin FlaggedElement to DateTimeInputWidget"
jenkins-bot [Mon, 18 Mar 2019 21:25:59 +0000 (21:25 +0000)]
Merge "Mixin FlaggedElement to DateTimeInputWidget"

5 years agoMerge "Urlencode fragments when redirecting after editing"
jenkins-bot [Mon, 18 Mar 2019 20:55:58 +0000 (20:55 +0000)]
Merge "Urlencode fragments when redirecting after editing"

5 years agoMixin FlaggedElement to DateTimeInputWidget
Daimona Eaytoy [Mon, 18 Mar 2019 10:07:59 +0000 (11:07 +0100)]
Mixin FlaggedElement to DateTimeInputWidget

As consequence of Id46ca3b630a9d24bc4790c1aa8c6e15c95ea2e51.

Bug: T218513
Change-Id: Iaf1078971767224119138e47bb175094230c99a2

5 years agoUrlencode fragments when redirecting after editing
Max Semenik [Mon, 18 Mar 2019 05:42:42 +0000 (22:42 -0700)]
Urlencode fragments when redirecting after editing

This is a quick fix for the main symptom of the Chrome bug that results in
users being redirected to Special:BadTitle after section editing. We'll
need to discuss a more permanent solution.

Bug: T216029
Change-Id: I4b2d42ebc74031df86bc52310da71819da11c1ae

5 years agoMerge "Password: update documentation"
jenkins-bot [Mon, 18 Mar 2019 01:07:10 +0000 (01:07 +0000)]
Merge "Password: update documentation"

5 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sun, 17 Mar 2019 20:54:44 +0000 (21:54 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I2d4ac09f82c79444730cf9cf0c8f01fc5109b917

5 years agoPassword: update documentation
Max Semenik [Sun, 17 Mar 2019 19:44:19 +0000 (12:44 -0700)]
Password: update documentation

Change-Id: Ifd7afc48e301a7985c2dd9134a7ea75af9bfeb4b

5 years agoMerge "Make LinkCache::isCacheable include namespaces like NS_CATEGORY/NS_MODULE"
jenkins-bot [Sun, 17 Mar 2019 18:49:05 +0000 (18:49 +0000)]
Merge "Make LinkCache::isCacheable include namespaces like NS_CATEGORY/NS_MODULE"

5 years agoMerge "Advertise feeds only if $wgFeed is enabled"
jenkins-bot [Sun, 17 Mar 2019 16:33:19 +0000 (16:33 +0000)]
Merge "Advertise feeds only if $wgFeed is enabled"

5 years agorunJobs.php output something when the job queue is empty
RazeSoldier [Sun, 18 Feb 2018 17:31:29 +0000 (01:31 +0800)]
runJobs.php output something when the job queue is empty

If the job queue is empty, output "Job queue is empty."

Bug: T187628
Change-Id: I7d0925bd2995526b1a67148096e9543766a62da7

5 years agoUse READ_EXCLUSIVE in SpecialConfirmEmail::attemptConfirm
Aaron Schulz [Sun, 17 Mar 2019 05:35:43 +0000 (22:35 -0700)]
Use READ_EXCLUSIVE in SpecialConfirmEmail::attemptConfirm

Bug: T202149
Change-Id: I9abc9e653dcc0910a5eea1dad56b2432d33d3c44

5 years agoAdvertise feeds only if $wgFeed is enabled
saper [Sun, 28 Jan 2018 02:21:51 +0000 (03:21 +0100)]
Advertise feeds only if $wgFeed is enabled

Wikis with $wgFeed=false should not present an Atom icon on the RecentChanges/Watchlist.

Bug: T116145
Change-Id: Ic64f7f5115a77c42ed2b336f6996fe711b3822ba

5 years agoMerge "RELEASE-NOTES: Make more consistent and useful for sysadmins"
jenkins-bot [Sat, 16 Mar 2019 22:54:32 +0000 (22:54 +0000)]
Merge "RELEASE-NOTES: Make more consistent and useful for sysadmins"

5 years agoMerge "Various fixes for phan-taint-check"
jenkins-bot [Sat, 16 Mar 2019 22:12:55 +0000 (22:12 +0000)]
Merge "Various fixes for phan-taint-check"

5 years agoMerge "ProtectionForm: Follow up on I167ae6300b37d4e9292"
jenkins-bot [Sat, 16 Mar 2019 22:03:25 +0000 (22:03 +0000)]
Merge "ProtectionForm: Follow up on I167ae6300b37d4e9292"

5 years agoMerge "rdbms: improve database connection loss handling"
jenkins-bot [Sat, 16 Mar 2019 21:23:36 +0000 (21:23 +0000)]
Merge "rdbms: improve database connection loss handling"

5 years agoRELEASE-NOTES: Make more consistent and useful for sysadmins
James D. Forrester [Fri, 15 Mar 2019 00:58:24 +0000 (17:58 -0700)]
RELEASE-NOTES: Make more consistent and useful for sysadmins

* Move the "upgrading" bit further up, and put the notes specific
  to upgrading inside it.
* Word all configuration changes to start with the $wg… – rubric
  so they're easy to spot.
* Be explicit when new configuration options are temporary.
* Split user and developer features. Sysadmin features are what
  the "Configuration changes" section is for, so spell that out.

Change-Id: Id12ced8bb764f2c3945c14799d63c17e2711c6f6

5 years agoVarious fixes for phan-taint-check
Brian Wolff [Sun, 17 Feb 2019 11:47:41 +0000 (11:47 +0000)]
Various fixes for phan-taint-check

Change-Id: I56f42ef2d2e9b4f3c23e1e93d1a4d3db64f16de7

5 years agoProtectionForm: Follow up on I167ae6300b37d4e9292
Derick Alangi [Mon, 11 Mar 2019 09:34:23 +0000 (10:34 +0100)]
ProtectionForm: Follow up on I167ae6300b37d4e9292

Per code search string "\$this\-\>showLogExtract\( \$ou", method
is only called within the ProtectionForm class so can be safely
made private but there are methods with the same name in a class
like LogEventsList but do different things.

Inspired by @Thiemo's comment on I167ae6300b37d4e9292.

Change-Id: Ic4983ccffecc6285f848d6e926017c4c6df4855f

5 years agoCode style tweaks
Jack Phoenix [Fri, 15 Mar 2019 23:13:36 +0000 (01:13 +0200)]
Code style tweaks

Change-Id: I2c602ba642e5692e6c56817aac89be9058bf5bdb

5 years agoMake LinkCache::isCacheable include namespaces like NS_CATEGORY/NS_MODULE
Aaron Schulz [Thu, 14 Mar 2019 06:44:38 +0000 (23:44 -0700)]
Make LinkCache::isCacheable include namespaces like NS_CATEGORY/NS_MODULE

Category and module pages are some of the most frequently referenced

Change-Id: I6d29e883883cbea596b287494e75663d09130749

5 years agoMerge "User: Remove redundant wgClockSkewFudge code"
jenkins-bot [Sat, 16 Mar 2019 03:03:28 +0000 (03:03 +0000)]
Merge "User: Remove redundant wgClockSkewFudge code"

5 years agoMerge "Remove wgSitesCacheFile and rebuildSitesCache.php (unused)"
jenkins-bot [Sat, 16 Mar 2019 03:01:28 +0000 (03:01 +0000)]
Merge "Remove wgSitesCacheFile and rebuildSitesCache.php (unused)"

5 years agoMerge "Localisation updates from https://translatewiki.net."
jenkins-bot [Fri, 15 Mar 2019 23:17:41 +0000 (23:17 +0000)]
Merge "Localisation updates from https://translatewiki.net."

5 years agoMerge "Make EditPage::getTemplates avoid page table query spam"
jenkins-bot [Fri, 15 Mar 2019 23:11:11 +0000 (23:11 +0000)]
Merge "Make EditPage::getTemplates avoid page table query spam"

5 years agoMerge "rdbms: lower the log channel severity of LoadMonitor::getServerStates"
jenkins-bot [Fri, 15 Mar 2019 22:57:31 +0000 (22:57 +0000)]
Merge "rdbms: lower the log channel severity of LoadMonitor::getServerStates"

5 years agoMerge "Remove empty and unnecessary /* @{{ … */ comments"
jenkins-bot [Fri, 15 Mar 2019 22:03:29 +0000 (22:03 +0000)]
Merge "Remove empty and unnecessary /* @{{ … */ comments"

5 years agoMerge "Fix WatchedItemStore last-seen stashing logic"
jenkins-bot [Fri, 15 Mar 2019 21:46:07 +0000 (21:46 +0000)]
Merge "Fix WatchedItemStore last-seen stashing logic"

5 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 15 Mar 2019 21:05:39 +0000 (22:05 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I910aa8cc077a12f2a7ef00f41087f5c3e08ab0d4

5 years agoUser: Remove redundant wgClockSkewFudge code
Timo Tijhof [Fri, 15 Mar 2019 00:05:52 +0000 (00:05 +0000)]
User: Remove redundant wgClockSkewFudge code

Ensuring the new value is at least as high as 1 second higher
than the current value is sufficient.

The main code paths using this are checkAndSetTouched (for user group
changes) and saveSettings(), both of which use makeUpdateConditions() which
ensures we bail out if something else already wrote to it in the mean time.
As such, there is no longer a need to make sure our time is higher than
something another server may have written, given that is no longer something
we support.

This variable was introduced in 2005 (MW 1.4) with r9403 (1d12276bcb3),
and factored out as newTouchedTimestamp() in 2007 (MW 1.8)
with r16772 (c1094ba9876).

Change-Id: I940fb0dd125286a4a348c11e2c8d197f9288a75d

5 years agoRemove wgSitesCacheFile and rebuildSitesCache.php (unused)
Timo Tijhof [Thu, 14 Mar 2019 19:46:19 +0000 (19:46 +0000)]
Remove wgSitesCacheFile and rebuildSitesCache.php (unused)

This seems to have been intended as optimization for SiteStore,
but was never used as far as I can tell. Instead, SiteStore is
already cached via LocalServerCache (APC).

Keep the FileBasedSiteLookup class for one release cycle in case
third parties not indexed by MediaWiki Codesearch are using it.

== History

* 2013: Report of high memcached usage by Wikibase via SiteStore.
* 2014: Lazy-load the data in Wikibase (d3f2e99cb6).
* 2014: Implement the file-based cache (via T47532 and 90f6efc360fd5).
* 2015: Use local-server cache (APC), per T58602.

The file-based code was never used. The related task marked
invalid (T47532).

Change-Id: I8e2d9edcf3880149f824cc3de37793ca57435b49

5 years agoparser: Rename $lastSection to $lastParagraph
Arlo Breault [Fri, 15 Mar 2019 19:41:22 +0000 (15:41 -0400)]
parser: Rename $lastSection to $lastParagraph

This now at least matches the function names even though what's actually
meant is more like 'block-level tag'.  Section is a poor choice of name
since there're wikitext sections unrelated to this.

Change-Id: Ic83aff4d862800b778441c28884194480b7e7d96

5 years agoMake DeferredUpdates enqueue updates that failed to run when possible
Aaron Schulz [Fri, 12 Oct 2018 20:49:25 +0000 (13:49 -0700)]
Make DeferredUpdates enqueue updates that failed to run when possible

Bug: T206288
Bug: T206283
Change-Id: I6025bcc7d68cf214d291191d4044a66cdeff108b

5 years agoMerge "deferred: Remove deprecated CdnCacheUpdate::newSimplePurge"
jenkins-bot [Fri, 15 Mar 2019 19:09:57 +0000 (19:09 +0000)]
Merge "deferred: Remove deprecated CdnCacheUpdate::newSimplePurge"

5 years agordbms: document that IDatabase::selectFieldValues() keeps the order
Aaron Schulz [Fri, 15 Mar 2019 18:41:03 +0000 (11:41 -0700)]
rdbms: document that IDatabase::selectFieldValues() keeps the order

Change-Id: I068a938121949509fd3bf95047dffbaec41c5854

5 years agoRevert "Temporarily trim leading/trailing whitespace from parser test clauses"
C. Scott Ananian [Fri, 15 Mar 2019 18:16:33 +0000 (14:16 -0400)]
Revert "Temporarily trim leading/trailing whitespace from parser test clauses"

This reverts commit 0363dbf98e6b71e92d439e0e2020bb388cc2aea2, since
T208070 is now merged.

Bug: T208070
Depends-On: I05511aee275238954f22db78616b19ce10cd6490
Depends-On: I120ca25a77b7b933de4afddd1d458e36a95e26da
Depends-On: I47d1d9620031036b9497cacf70b34a45c3e5f409
Depends-On: I6119b4af9632496dbda81c3a3951c55217e7c2d5
Depends-On: I584f74e2ba0d14c2975fb43cc53c5e26080e6fc7
Depends-On: Ie70e1915c172d2d67b3b8b90eb35f753b800f61e
Depends-On: I74953d5de765a2245a2999f17c7ae1cf49376bd1
Change-Id: I63f60b2e8beea9dde883c4ad65d0bd4411f93e70

5 years agoparser: Omit outputting newline after final line
Arlo Breault [Tue, 23 Oct 2018 23:26:51 +0000 (19:26 -0400)]
parser: Omit outputting newline after final line

Bug: T208070
Depends-On: I47d1d9620031036b9497cacf70b34a45c3e5f409
Depends-On: I6119b4af9632496dbda81c3a3951c55217e7c2d5
Depends-On: I584f74e2ba0d14c2975fb43cc53c5e26080e6fc7
Depends-On: Ie70e1915c172d2d67b3b8b90eb35f753b800f61e
Change-Id: I120ca25a77b7b933de4afddd1d458e36a95e26da

5 years agoparser: Remove trailing newline after prefixes have been cleared
Arlo Breault [Tue, 23 Oct 2018 22:47:48 +0000 (18:47 -0400)]
parser: Remove trailing newline after prefixes have been cleared

Bug: T208070
Depends-On: I74953d5de765a2245a2999f17c7ae1cf49376bd1
Change-Id: I05511aee275238954f22db78616b19ce10cd6490

5 years agoTemporarily trim leading/trailing whitespace from parser test clauses
C. Scott Ananian [Fri, 15 Mar 2019 18:15:26 +0000 (14:15 -0400)]
Temporarily trim leading/trailing whitespace from parser test clauses

This allows us to break a circular dependency in the patches for T208070.
It will be reverted as soon as T208070 is merged.

Bug: T208070
Change-Id: I3da235cb83efa424f0cf1cf4fc7233240fcdf6b2

5 years agoSplit out new RefreshSecondaryDataUpdate class
Aaron Schulz [Fri, 12 Oct 2018 20:45:23 +0000 (13:45 -0700)]
Split out new RefreshSecondaryDataUpdate class

Make DerivedPageDataUpdater bundle all the related DataUpdate tasks
on page change with a RefreshSecondaryDataUpdate wrapper. If one of
the DataUpdate tasks fails, then the entire bundle of updates can be
re-run in the form of enqueueing a RefreshLinksJob instance (these
jobs are idempotent). If several of the bundled tasks fail, it is easy
for DeferredUpdates to know that only one RefreshLinksJob should be
enqueued.

The goal is to make DataUpdate tasks more reliable and resilient.
Most of these deferred update failures are due to ephemeral problems
like lock contention. Since the job queue is already able to reliably
store and retry jobs, and the time that a regular web request can spend
in post-send is more limited, it makes the most sense to just enqueue
tasks as jobs if they fail post-send.

Make LinkUpdate no longer defined as enqueueable as RefreshLinksJob
since they are not very congruent (LinksUpdate only does some of the
work that RefreshLinksJob does). Only the wrapper, with the bundle of
DataUpdate instances, is congruent to RefreshLinksJob.

This change does not itself implement the enqueue-on-failure logic
in DeferredUpdates, but is merely a prerequisite.

Bug: T206288
Change-Id: I191103c1aeff4c9fedbf524ee387dad9bdf5fab8

5 years agoRemove empty and unnecessary /* @{{ … */ comments
Thiemo Kreuz [Fri, 15 Mar 2019 13:53:12 +0000 (14:53 +0100)]
Remove empty and unnecessary /* @{{ … */ comments

This was the only comment I could find that uses two curly brackets
for some reason. There are a few more with one curly bracket.

Change-Id: Iaed631916064e6be4895edd4c7a3d7de491e16c2

5 years agoMerge "Add /** @var SplFileInfo $fileInfo */ docs where needed"
jenkins-bot [Fri, 15 Mar 2019 12:39:12 +0000 (12:39 +0000)]
Merge "Add /** @var SplFileInfo $fileInfo */ docs where needed"

5 years agoMerge "Fix ChangeTagsTest failing on Postgres"
jenkins-bot [Fri, 15 Mar 2019 10:53:42 +0000 (10:53 +0000)]
Merge "Fix ChangeTagsTest failing on Postgres"

5 years agoMake EditPage::getTemplates avoid page table query spam
Aaron Schulz [Fri, 15 Mar 2019 09:24:31 +0000 (02:24 -0700)]
Make EditPage::getTemplates avoid page table query spam

This changes TemplatesOnThisPageFormatter to use LinkBatch
and LinkBatch/LinkCache to manage the field.

Change-Id: I523158cdffc599d4d29bab91c98e55085130cee2

5 years agoFix ChangeTagsTest failing on Postgres
Thiemo Kreuz [Fri, 15 Mar 2019 09:10:33 +0000 (10:10 +0100)]
Fix ChangeTagsTest failing on Postgres

The order of elements returned by the SELECT is not guaranteed. But the
assertEquals() can't know this. It does not know how to identify the two
objects, other than by their array index.

Using assertArrayEquals() would fix this. But I honestly don't like this
helper method. It is expensive, for example. So I went for an ORDER BY.

An example for this failure can be seen here:
https://integration.wikimedia.org/ci/job/mediawiki-quibble-vendor-postgres-php70-docker/2484/console

Change-Id: I284d13d21b9bc34270307e78430180d94fc6665e

5 years agordbms: lower the log channel severity of LoadMonitor::getServerStates
Aaron Schulz [Fri, 15 Mar 2019 03:43:13 +0000 (20:43 -0700)]
rdbms: lower the log channel severity of LoadMonitor::getServerStates

Change-Id: If42e3973c3a4ce5baff628befd58d4b7b3a2909b

5 years agordbms: improve database connection loss handling
Aaron Schulz [Thu, 14 Mar 2019 02:29:36 +0000 (19:29 -0700)]
rdbms: improve database connection loss handling

Avoid throwing errors in Database::replaceLostConnection()

Bug: T218226
Change-Id: Id07f305816c61f62aaf1ae893f5d37c03c865f46

5 years agoMerge "rdbms: make Database::query() more readable and consistent"
Krinkle [Fri, 15 Mar 2019 01:16:53 +0000 (01:16 +0000)]
Merge "rdbms: make Database::query() more readable and consistent"

5 years agodeferred: Remove deprecated CdnCacheUpdate::newSimplePurge
Timo Tijhof [Fri, 15 Mar 2019 01:16:05 +0000 (01:16 +0000)]
deferred: Remove deprecated CdnCacheUpdate::newSimplePurge

Change-Id: I4ad7429b5253b5f2d38b9380d55acf42e34e21ba

5 years agoMerge "objectcache: make BagOStuff::add() abstract to discourage non-atomic versions"
Krinkle [Fri, 15 Mar 2019 01:00:26 +0000 (01:00 +0000)]
Merge "objectcache: make BagOStuff::add() abstract to discourage non-atomic versions"

5 years agoMerge "objectcache: make the BagOStuff::add() operation more atomic for WinCache"
Krinkle [Fri, 15 Mar 2019 00:56:31 +0000 (00:56 +0000)]
Merge "objectcache: make the BagOStuff::add() operation more atomic for WinCache"

5 years agoMerge "objectcache: make the BagOStuff::add() operation more atomic for APC"
Krinkle [Fri, 15 Mar 2019 00:56:02 +0000 (00:56 +0000)]
Merge "objectcache: make the BagOStuff::add() operation more atomic for APC"

5 years agoMerge "objectcache: add BagOStuff::deleteMulti() method for consistency"
jenkins-bot [Fri, 15 Mar 2019 00:51:19 +0000 (00:51 +0000)]
Merge "objectcache: add BagOStuff::deleteMulti() method for consistency"

5 years agoobjectcache: make BagOStuff::add() abstract to discourage non-atomic versions
Aaron Schulz [Tue, 12 Mar 2019 10:02:24 +0000 (03:02 -0700)]
objectcache: make BagOStuff::add() abstract to discourage non-atomic versions

Change-Id: If3c3fbf21207b0c74cad8a29fa5bbabe0af896e3

5 years agoobjectcache: make the BagOStuff::add() operation more atomic for WinCache
Aaron Schulz [Tue, 12 Mar 2019 10:01:37 +0000 (03:01 -0700)]
objectcache: make the BagOStuff::add() operation more atomic for WinCache

Change-Id: I285ed9a7d0894adfe29b0bdc106b7518f655ba45

5 years agoobjectcache: make the BagOStuff::add() operation more atomic for APC
Aaron Schulz [Tue, 12 Mar 2019 09:49:59 +0000 (02:49 -0700)]
objectcache: make the BagOStuff::add() operation more atomic for APC

Change-Id: Ifb72b1c17439c80e6d431d5fe2ec9ad9437e3ad7

5 years agoMerge "user: Avoid page_touched update in User::saveSettings"
jenkins-bot [Fri, 15 Mar 2019 00:33:22 +0000 (00:33 +0000)]
Merge "user: Avoid page_touched update in User::saveSettings"

5 years agoMerge "Deprecate Profiler::profileIn and Profiler::profileOut stubs"
jenkins-bot [Fri, 15 Mar 2019 00:15:57 +0000 (00:15 +0000)]
Merge "Deprecate Profiler::profileIn and Profiler::profileOut stubs"

5 years agoMerge "filebackend: change "profiler" parameter in FileBackend so it works again"
jenkins-bot [Fri, 15 Mar 2019 00:10:06 +0000 (00:10 +0000)]
Merge "filebackend: change "profiler" parameter in FileBackend so it works again"

5 years agoMerge "rdbms: change "profiler" argument in Database::factory so it works again"
jenkins-bot [Fri, 15 Mar 2019 00:02:35 +0000 (00:02 +0000)]
Merge "rdbms: change "profiler" argument in Database::factory so it works again"

5 years agouser: Avoid page_touched update in User::saveSettings
Aaron Schulz [Thu, 14 Mar 2019 23:46:44 +0000 (16:46 -0700)]
user: Avoid page_touched update in User::saveSettings

This was added in r42179 (65bbc147836aa) and only CDN and object caches
need purging.

Change-Id: I7ca40f8eda15ffeac3aa21aa4445b993d9fcc131

5 years agoobjectcache: add BagOStuff::deleteMulti() method for consistency
Aaron Schulz [Tue, 12 Mar 2019 07:38:56 +0000 (00:38 -0700)]
objectcache: add BagOStuff::deleteMulti() method for consistency

Also:
* Make the BagOStuff tests actually pass for memcached and sql
* Add more unit tests for BagOStuff
* Make SqlBagOStuff::add() more atomic

Change-Id: Ic1eec0990a66b595b57c646498c3bd229442230c

5 years agordbms: make Database::query() more readable and consistent
Aaron Schulz [Thu, 14 Mar 2019 01:56:26 +0000 (18:56 -0700)]
rdbms: make Database::query() more readable and consistent

Mainly:
* Stash trxLevel as the variable $priorTransaction since
  Database::replaceLostConnection might make it 0 when called.
* Factor out Database::beginIfImplied method and call it on
  each query attempt of query(), not just the first one.
* Do not bother setting STATUS_TRX_ERROR if a query fails due to
  connection issues and was recoverable since requiring ROLLBACK
  in order to continue has no real advantage.
* Do not bother setting trxDoneWrites/lastWriteTime for temporary
  table operations.
* Make Database::handleTransactionLoss() keep TransactionProfiler
  cleaner by calling Database::transactionWritingOut().

Also:
* Make sure Database::wasKnownStatementRollbackError() calls are
  right after the corresponding queries so it is easy to follow.
  Having connection attempts in between seems fragile.
* Rename Database::doProfiledQuery => Database::attemptQuery and
  move more logic to that method.
* Factor out Database::assertNeitherReplicaNorReadOnly method.
* Rename Database::assertOpen => Database::assertHasConnectionHandle.
* Fix wording of Database::wasKnownStatementRollbackError comments.
* Use $isEffectiveWrite variable name instead of $isNonTempWrite
  and $isWrite in some places.

Bug: T218226
Change-Id: I2063e4080b41d5fc504f9207a56312ce92130ed7

5 years agoDeprecate Profiler::profileIn and Profiler::profileOut stubs
Aaron Schulz [Wed, 13 Mar 2019 18:18:22 +0000 (11:18 -0700)]
Deprecate Profiler::profileIn and Profiler::profileOut stubs

Change-Id: I2a8764d2464883e9fe66048e97b688c5a76d595a

5 years agofilebackend: change "profiler" parameter in FileBackend so it works again
Aaron Schulz [Wed, 13 Mar 2019 18:14:19 +0000 (11:14 -0700)]
filebackend: change "profiler" parameter in FileBackend so it works again

The Profiler::profileIn and Profiler::profileOut methods are just stubs.
Use a callback to the Profile::scopedProfileIn method instead.

Change-Id: I7b493c145357994f61faebfbe3f65d38d2e6da42

5 years agordbms: change "profiler" argument in Database::factory so it works again
Aaron Schulz [Wed, 13 Mar 2019 18:11:18 +0000 (11:11 -0700)]
rdbms: change "profiler" argument in Database::factory so it works again

The Profiler::profileIn and Profiler::profileOut methods are just stubs.
Use a callback to the Profiler::scopedProfileIn method instead.

Change-Id: I16068bce583bb880250fe91235f2283453be5e4c

5 years agoMerge "Avoid using outdated $casToken field for BagOStuff calls"
jenkins-bot [Thu, 14 Mar 2019 22:14:23 +0000 (22:14 +0000)]
Merge "Avoid using outdated $casToken field for BagOStuff calls"

5 years agoMerge "Avoid sending duplicate ProfilerOutputText comments/html"
jenkins-bot [Thu, 14 Mar 2019 22:14:18 +0000 (22:14 +0000)]
Merge "Avoid sending duplicate ProfilerOutputText comments/html"

5 years agoMerge "rdbms: make query exceptions include the backtrace when logged"
jenkins-bot [Thu, 14 Mar 2019 21:58:58 +0000 (21:58 +0000)]
Merge "rdbms: make query exceptions include the backtrace when logged"

5 years agoMerge "rdbms: clarify $uniqueIndexes argument to replace()/upsert()"
jenkins-bot [Thu, 14 Mar 2019 21:58:53 +0000 (21:58 +0000)]
Merge "rdbms: clarify $uniqueIndexes argument to replace()/upsert()"

5 years agoFix WatchedItemStore last-seen stashing logic
Aaron Schulz [Thu, 14 Mar 2019 19:50:52 +0000 (12:50 -0700)]
Fix WatchedItemStore last-seen stashing logic

This should be the "last revision seen" timestamp, which is
different than the "first revision not seen" timestamp in the DB.

Also make sure that SpecialWatchlist accounts for the stash values.

Relatedly, better document the callback usage in BagOStuff::merge().

Change-Id: I98b03a5cd40fec5b4a2633d499ff77079d264e3c

5 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 14 Mar 2019 21:37:35 +0000 (22:37 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I2157943a62f159425a99eb7a577658b813681678