6 years agoMerge "Minor fix to primeFileCache() comment"
jenkins-bot [Sat, 24 Oct 2015 07:43:17 +0000 (07:43 +0000)]
Merge "Minor fix to primeFileCache() comment"

6 years agoMerge "Provide some default $wgRateLimits values"
jenkins-bot [Sat, 24 Oct 2015 07:28:11 +0000 (07:28 +0000)]
Merge "Provide some default $wgRateLimits values"

6 years agoProvide some default $wgRateLimits values
Aaron Schulz [Thu, 22 Oct 2015 04:52:52 +0000 (21:52 -0700)]
Provide some default $wgRateLimits values

* This provides some minimal out-of-the-box protection.
* These mostly are the values used by WMF in mediawiki-config

Change-Id: Ie510ca9314e151f9c0ad0705d096fe2bb749a59d

6 years agoMerge "Fixes to MemcachedBagOStuff::makeKeyInternal()"
Aaron Schulz [Sat, 24 Oct 2015 05:44:05 +0000 (05:44 +0000)]
Merge "Fixes to MemcachedBagOStuff::makeKeyInternal()"

6 years agoAdd wfWaitForSlaves() to HTMLCacheUpdateJob
Aaron Schulz [Sat, 24 Oct 2015 05:24:48 +0000 (22:24 -0700)]
Add wfWaitForSlaves() to HTMLCacheUpdateJob

Change-Id: Iabf3d01f15b36bcb51e7fd8512404df2a3aedf35

6 years agoFixes to MemcachedBagOStuff::makeKeyInternal()
Aaron Schulz [Sat, 24 Oct 2015 04:03:11 +0000 (21:03 -0700)]
Fixes to MemcachedBagOStuff::makeKeyInternal()

* Follow-up to 0c9fb12265e2
* Make sure colons actually get escaped
* Added more unit tests
* Also fixed the test actual/expected order

Change-Id: Ie04ea6059ee1eb6d1da8f30fefdec52fa49d38fb

6 years agoMerge "Web installer should not pollute global namespace with session variables"
jenkins-bot [Sat, 24 Oct 2015 04:38:46 +0000 (04:38 +0000)]
Merge "Web installer should not pollute global namespace with session variables"

6 years agoEscape colons in BagOStuff key segments
Ori Livneh [Fri, 23 Oct 2015 22:12:51 +0000 (15:12 -0700)]
Escape colons in BagOStuff key segments

For the sake of safety and correctness, the following BagOStuff::makeKey()
invocations should return distinct keys:

   $cache->makeKey( 'ab:', 'cd' );
   $cache->makeKey( 'ab', ':cd' );

That is not currently the case, because while we use ':' as a key path
separator, we don't escape ':' in the input supplied to makeKey(). So, make
BagOStuff::makeKeyInternal() URL-encode colons.

To prevent this from messing up the max. key length calculations, reproduce
this logic in MemcachedBagOStuff::makeKeyInternal(), in lieu of having the
method call its parent.

Change-Id: I83ea7e7336a1c9e64aa42284c2517089a736efe5

6 years agoEnsure all key transformations are applied by BagOStuff::makeKeyInternal()
Ori Livneh [Sat, 24 Oct 2015 00:53:25 +0000 (17:53 -0700)]
Ensure all key transformations are applied by BagOStuff::makeKeyInternal()

Currently we have to undo any transformations we apply to keys in getMulti() by
iterating over the response array keys reversing any changes. This is hairy and
complicated. So --

* Replace calls to MemcachedBagOStuff::encodeKey() with calls to a new method,
  MemcachedBagOStuff::validateKeyEncoding(). The new method only validates that
  the key is compatible with memcached. If it is not, it throws an exception.
  If it is, it returns the key unmodified.

* Remove MemcachedBagOStuff::{encode,decode}Key(), since they no longer serve a
  purpose, and have no callers.

Change-Id: If3e20c6a1a1b42fc1f2823aa660328e37c26eccb

6 years agoMinor fix to primeFileCache() comment
Aaron Schulz [Sat, 24 Oct 2015 00:18:56 +0000 (17:18 -0700)]
Minor fix to primeFileCache() comment

Change-Id: I7d040c5a914574df72fa31612df0eb28e15fd46c

6 years agoWeb installer should not pollute global namespace with session variables
saper [Fri, 23 Oct 2015 20:54:42 +0000 (22:54 +0200)]
Web installer should not pollute global namespace with session variables

There is no need to store session variables
(that also include user-supplied arguments)
as $wgXXX global variables.

Bug: T116375
Change-Id: I880d4299566beaf99ed1fc21c690cdda64149b0e

6 years agoMerge "Improve normalization and sanitization of memcached keys"
jenkins-bot [Fri, 23 Oct 2015 23:36:29 +0000 (23:36 +0000)]
Merge "Improve normalization and sanitization of memcached keys"

6 years agoImprove normalization and sanitization of memcached keys
Ori Livneh [Fri, 23 Oct 2015 18:10:10 +0000 (11:10 -0700)]
Improve normalization and sanitization of memcached keys

The motivation for this patch came from seeing the following error in the
memcached log:

  memcached ERROR: Memcached error for key "flowdb:flow_ref:wiki:by-source:\
   v3:0:tawikinews:பூமிக்கு_அச்சுறுத்தலான_சிறுகோள்களைக்_கண்டுபிடிக்கும்_முயற்சியில்_தனியார்_நிறுவன0jம்:4.7" \

I submitted a fix to Flow in I26e531f6, but I noticed that AbuseFilter had a
similar issue (fixed by Aaron in I27b51a4b), so I started thinking about how
to solve this more generally:

* The regular expression we current use to sanitize keys does not cover
  characters outside the ASCII range, but such characters can be illegal
  if one of their constituent bytes (when taken by itself) is an ASCII
  control character. So change the regular expression to cover any and all
  characters that fall outside the range \x22-\x7e (and '#' -- see below).

* Enforce a key length limit of 255 bytes, which is the maximum length
  permitted by the memcached protocol. The Tamil segment in the key above is 84
  characters, but 233 bytes in UTF-8, which become 684 characters when
  URL-encoded. To fix this, try to shrink any segment that would push the total
  key length over the limit by md5()ing it. If the end result is *still* over
  the limit (this would happen if, for example, $args consists of many short
  strings), then concatenate all args together and MD5 them.

* MD5'd arguments are prefixed with '#'. Any "organic" '#'s in the key segments
  are URL-encoded.

Change-Id: Ia46987d3b0a09bb6b1952abd936d4c72ea7c56a0

6 years agoMerge "installer: Define $wgResourceBasePath in LocalSettings.php"
jenkins-bot [Fri, 23 Oct 2015 22:16:20 +0000 (22:16 +0000)]
Merge "installer: Define $wgResourceBasePath in LocalSettings.php"

6 years agoMerge "poolcounter: Add 'trigger' field to the slow-parse log"
jenkins-bot [Fri, 23 Oct 2015 22:02:01 +0000 (22:02 +0000)]
Merge "poolcounter: Add 'trigger' field to the slow-parse log"

6 years agoinstaller: Define $wgResourceBasePath in LocalSettings.php
saper [Fri, 23 Oct 2015 12:40:00 +0000 (14:40 +0200)]
installer: Define $wgResourceBasePath in LocalSettings.php

Bug: T116374
Bug: T75031
Change-Id: I459c1097ed7048c3fe24e636e9ea22ec2e3b2675

6 years agopoolcounter: Add 'trigger' field to the slow-parse log
Timo Tijhof [Fri, 23 Oct 2015 18:33:52 +0000 (19:33 +0100)]
poolcounter: Add 'trigger' field to the slow-parse log

To better indicate that these are only triggered by page views.

We don't currently have any slow-parse logging for the parser
invocation that happens during save (which means we're potentially
missing lots of them).

Once we add that, this will help distinguish them.

Bug: T110760
Change-Id: I22be5684ef93efd410d683637e223f770d6c768c

6 years agoMerge "Remove buggy b/c logic in Parser::disableCache()/updateCacheExpiry()"
jenkins-bot [Fri, 23 Oct 2015 20:30:20 +0000 (20:30 +0000)]
Merge "Remove buggy b/c logic in Parser::disableCache()/updateCacheExpiry()"

6 years agoRemove buggy b/c logic in Parser::disableCache()/updateCacheExpiry()
Aaron Schulz [Fri, 23 Oct 2015 19:35:43 +0000 (12:35 -0700)]
Remove buggy b/c logic in Parser::disableCache()/updateCacheExpiry()

* Setting mCacheTime to -1 is for old callers that
  only check getCacheTime() instead of getCacheExpiry().
  Most of them are already broken (WikiLog/SemanticForms) as
  they check for -1 which is in fact never returned
  due to the TS_MW conversion in Parser::getCacheTime.
* By using -1, the value of page_links_updated can end up
  as 1969, which is confusing and broken.

Change-Id: I8809a4258eacff05992a2c27ade7f6a0c1731c51

6 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 23 Oct 2015 19:27:57 +0000 (21:27 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: Ia0a10443f264e238e6136edbb2bb60dd9ddd1c96

6 years agoMerge "Setup.php: Remove incorrect comment"
jenkins-bot [Fri, 23 Oct 2015 19:04:53 +0000 (19:04 +0000)]
Merge "Setup.php: Remove incorrect comment"

6 years agoSetup.php: Remove incorrect comment
Bartosz Dziewoński [Fri, 23 Oct 2015 18:50:11 +0000 (20:50 +0200)]
Setup.php: Remove incorrect comment

This is not true since $wgSkinExtensionFunctions was removed in r87487.

Change-Id: Ia2c75aa191516fa43272ed51789579cf7afd9e37

6 years agoThrow Exceptions on preg_* failures in MagicWordArray::matchAndRemove()
Kunal Mehta [Thu, 15 Oct 2015 18:37:38 +0000 (11:37 -0700)]
Throw Exceptions on preg_* failures in MagicWordArray::matchAndRemove()

There are a lot of other cases in this file alone that need to be fixed
(e.g. (bool)preg_match), but those should be fixed in a more systematic
way like a wrapper function.

Bug: T115514
Change-Id: I3840a56adc0a6e50963b930051892491f8e90245

6 years agoMerge "Move CAPTCHA messages into ConfirmEdit and update class names"
jenkins-bot [Fri, 23 Oct 2015 15:36:30 +0000 (15:36 +0000)]
Merge "Move CAPTCHA messages into ConfirmEdit and update class names"

6 years agomediawiki.notification.css: Avoid horizontal scrollbar on fade in and fade out
Fomafix [Fri, 23 Oct 2015 12:24:15 +0000 (12:24 +0000)]
mediawiki.notification.css: Avoid horizontal scrollbar on fade in and fade out

This is a follow-up to I01473a199665b9fd86ed50b7d117532ac94f3edf.

Change-Id: I596927bfca0efd52db8d46eeea9ba38c7a9f7ca5

6 years agoMerge "ApiQueryAllRevisions: Actually use 'start' and 'end'"
jenkins-bot [Fri, 23 Oct 2015 07:44:45 +0000 (07:44 +0000)]
Merge "ApiQueryAllRevisions: Actually use 'start' and 'end'"

6 years agomediawiki.notification: Use CSS tranforms for in/out animations
Timo Tijhof [Fri, 25 Sep 2015 15:15:58 +0000 (16:15 +0100)]
mediawiki.notification: Use CSS tranforms for in/out animations

Remove the whole placeholder system. This was needed to preserve
parking space while visually animating the element elsewhere.
CSS transforms have this behaviour naturally.

Change-Id: I01473a199665b9fd86ed50b7d117532ac94f3edf

6 years agoReduce DBPerformance warning spam for jobs a bit
Aaron Schulz [Fri, 23 Oct 2015 03:40:57 +0000 (20:40 -0700)]
Reduce DBPerformance warning spam for jobs a bit

Change-Id: I1c5fdae6e0f98fff5f3336d8a46a4b3ff25d5bad

6 years agoMerge "Bound BagOStuff::lock() RTT estimate for sanity"
jenkins-bot [Fri, 23 Oct 2015 01:43:28 +0000 (01:43 +0000)]
Merge "Bound BagOStuff::lock() RTT estimate for sanity"

6 years agoMerge "Make TransactionProfiler show the actual query times"
jenkins-bot [Fri, 23 Oct 2015 01:32:00 +0000 (01:32 +0000)]
Merge "Make TransactionProfiler show the actual query times"

6 years agoMerge "Fix ChangeTag "lockTSE" values as INF does not actually work"
jenkins-bot [Thu, 22 Oct 2015 21:40:44 +0000 (21:40 +0000)]
Merge "Fix ChangeTag "lockTSE" values as INF does not actually work"

6 years agoMerge "Revert "mediawiki.Upload.BookletLayout: If the user can't upload, don't show...
jenkins-bot [Thu, 22 Oct 2015 21:31:12 +0000 (21:31 +0000)]
Merge "Revert "mediawiki.Upload.BookletLayout: If the user can't upload, don't show them the form""

6 years agoRevert "mediawiki.Upload.BookletLayout: If the user can't upload, don't show them...
Bartosz Dziewoński [Thu, 22 Oct 2015 21:20:50 +0000 (21:20 +0000)]
Revert "mediawiki.Upload.BookletLayout: If the user can't upload, don't show them the form"

This actually won't work for Wikimedia wikis, turns out
that many of them disabled local uploads.

This reverts commit 29edb68446b5b6faa4b5038698f042ef25e4425d.

Bug: T115866
Change-Id: Ib28539f2ff22cdbf1d80b1b601e7855c1110ad40

6 years agoMerge "mediawiki.Upload.BookletLayout: If the user can't upload, don't show them...
jenkins-bot [Thu, 22 Oct 2015 21:10:38 +0000 (21:10 +0000)]
Merge "mediawiki.Upload.BookletLayout: If the user can't upload, don't show them the form"

6 years agoMerge "Make LinksUpdate::__construct() use normal type hints"
jenkins-bot [Thu, 22 Oct 2015 21:10:34 +0000 (21:10 +0000)]
Merge "Make LinksUpdate::__construct() use normal type hints"

6 years agoFix ChangeTag "lockTSE" values as INF does not actually work
Aaron Schulz [Thu, 22 Oct 2015 21:00:06 +0000 (14:00 -0700)]
Fix ChangeTag "lockTSE" values as INF does not actually work

Change-Id: If6c6b034be60ffc8b22b67cef12e5d701a871788

6 years agoMerge "Properly make LinksUpdate be recursive when done from job queue"
jenkins-bot [Thu, 22 Oct 2015 20:46:00 +0000 (20:46 +0000)]
Merge "Properly make LinksUpdate be recursive when done from job queue"

6 years agoMake LinksUpdate::__construct() use normal type hints
Aaron Schulz [Thu, 22 Oct 2015 20:25:49 +0000 (13:25 -0700)]
Make LinksUpdate::__construct() use normal type hints

Change-Id: Ie5f4de95d07ac9f24e415f92c5116385863a47f9

6 years agomediawiki.Upload.BookletLayout: If the user can't upload, don't show them the form
Bartosz Dziewoński [Thu, 22 Oct 2015 19:25:32 +0000 (21:25 +0200)]
mediawiki.Upload.BookletLayout: If the user can't upload, don't show them the form

To improve in the future:
* Check the rights on the target wiki rather than current, they might
  not be the same
* Use a better error message when not all logged-in users can upload

Bug: T115866
Change-Id: I6f68122b5399f4b8766825c752e964478ae7563d

6 years agoProperly make LinksUpdate be recursive when done from job queue
Brian Wolff [Thu, 22 Oct 2015 18:56:03 +0000 (12:56 -0600)]
Properly make LinksUpdate be recursive when done from job queue

New enqueue method of DeferredUpdates was turning LinksUpdate
updates into Jobs. However RefreshLinksJob was not properly
reconstructing the secondary updates as being recursive (if they
were recursive). This means that templates weren't having the pages
that were using them being updated.

See also related T116001.

Change-Id: Ia06246efb2034fdfe07232fd8c2334160edbcf02

6 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 22 Oct 2015 18:46:05 +0000 (20:46 +0200)]
Localisation updates from https://translatewiki.net.

Change-Id: I7830f3ff793b90c23a08fa3496a7178c127cd605

6 years agoMove CAPTCHA messages into ConfirmEdit and update class names
Matthew Flaschen [Thu, 22 Oct 2015 14:49:09 +0000 (10:49 -0400)]
Move CAPTCHA messages into ConfirmEdit and update class names

Depends on I0e55a159efd66a73cd217d9a5e86b2bced90f57a in ConfirmEdit .
This should be merged just after that.

Also, remove a dead config variable.

This leaves only the CAPTCHA stuff that is actually specific
to CreateAccount.

Change-Id: I8924d537cad3e39adace99fb20626247128d9bd9

6 years agoMove Special:PageLanguage to the pagetools group on Special:SpecialPages
umherirrender [Fri, 16 Oct 2015 14:02:01 +0000 (16:02 +0200)]
Move Special:PageLanguage to the pagetools group on Special:SpecialPages

Acting on pages, so that group is better than the default of "other"

Change-Id: I50c993d69048eeee913fbab513711018999aafe9

6 years agoMerge "Remove old ProfilerOutputUdp class"
jenkins-bot [Thu, 22 Oct 2015 07:10:31 +0000 (07:10 +0000)]
Merge "Remove old ProfilerOutputUdp class"

6 years agoJobQueueRedis::doBatchPush(): report metrics even when failures occur
Ori Livneh [Thu, 22 Oct 2015 06:44:26 +0000 (23:44 -0700)]
JobQueueRedis::doBatchPush(): report metrics even when failures occur

The way the method is currently written, no stats are reported at all when
failures occur.

Change-Id: I627e8f6ce3a59098bc8949da7ed22f5c924177fc

6 years agojobqueue: track real job inserts as 'inserts_actual'
Ori Livneh [Thu, 22 Oct 2015 06:34:06 +0000 (23:34 -0700)]
jobqueue: track real job inserts as 'inserts_actual'

The `inserts` metric includes dupes. `inserts_actual` will track the rate at
which the job queue is actually growing.

Change-Id: Ie7c544fc8e59180a204d1d149b6a23ac48b8abab

6 years agoMake TransactionProfiler show the actual query times
Aaron Schulz [Thu, 22 Oct 2015 06:30:23 +0000 (23:30 -0700)]
Make TransactionProfiler show the actual query times

Also removed HTTP method from the message as logstash
gets those from the logger already

Change-Id: I7a6d9cb3ec8c7fcb53a081ee2bd055ff8c1c72c1

6 years agoMerge "CacheLRU: Simplify >0 assertion and remove verbose inline comment"
jenkins-bot [Thu, 22 Oct 2015 05:46:45 +0000 (05:46 +0000)]
Merge "CacheLRU: Simplify >0 assertion and remove verbose inline comment"

6 years agoMake LinksUpdate job spec use "refreshLinksPrioritized"
Aaron Schulz [Thu, 22 Oct 2015 04:59:47 +0000 (21:59 -0700)]
Make LinksUpdate job spec use "refreshLinksPrioritized"

This was missing in 4fcc427c10 due to being lost in PS4

Change-Id: I24641e7eccc1e61226777504dcfd75e1aa7f58c6

6 years agoRemove old ProfilerOutputUdp class
Aaron Schulz [Thu, 22 Oct 2015 03:59:47 +0000 (20:59 -0700)]
Remove old ProfilerOutputUdp class

This uses a non-standard output and requires a custom
collector that wmf does not maintain nor use anymore.

Change-Id: I41a68f7061465417fbdc5ca41f8eb6e1f99f1111

6 years agoBound BagOStuff::lock() RTT estimate for sanity
Aaron Schulz [Thu, 22 Oct 2015 03:14:54 +0000 (20:14 -0700)]
Bound BagOStuff::lock() RTT estimate for sanity

The timestamp difference might be 0 (or in rare cases, less)

Change-Id: I0298b413df637d9da5ff33c078ad49dadc8a46ce

6 years agoMerge "objectcache: Fix grammar error in BagOStuff::getWithToken doc"
jenkins-bot [Thu, 22 Oct 2015 02:33:16 +0000 (02:33 +0000)]
Merge "objectcache: Fix grammar error in BagOStuff::getWithToken doc"

6 years agoAdd WRITE_SYNC flag to BagOStuff::set()/merge()
Aaron Schulz [Sun, 18 Oct 2015 22:57:42 +0000 (15:57 -0700)]
Add WRITE_SYNC flag to BagOStuff::set()/merge()

* This blocks on writing to all replicas
  and returns false if any failed.
* This is useful if ChronologyProtector is to work across
  domains by having the writes go everywhere so that later
  reads will see them (and be local at the same time).
* Redundant doc comments were also removed.

Change-Id: I9ed098d563c64dba605e7809bc96731da3b3e79d

6 years agoobjectcache: Fix grammar error in BagOStuff::getWithToken doc
Timo Tijhof [Thu, 22 Oct 2015 01:35:35 +0000 (02:35 +0100)]
objectcache: Fix grammar error in BagOStuff::getWithToken doc

Follows-up 1fa1235d32.

Change-Id: I19a4430609423f5ff32a1014ed21131175469adf

6 years agoMake DeferredUpdates::doUpdates always commit per task
Aaron Schulz [Thu, 8 Oct 2015 07:09:08 +0000 (00:09 -0700)]
Make DeferredUpdates::doUpdates always commit per task

* All callers are either using commit already or would be fine
  using it (e.g. Maintenance scripts and JobRunner that have
  no real transaction open).

Change-Id: I9f54b27619da6dac2cb63d255995aabc4ee78002

6 years agoMake hookErrorHandler() only care about serious signature errors
Aaron Schulz [Thu, 22 Oct 2015 00:31:18 +0000 (17:31 -0700)]
Make hookErrorHandler() only care about serious signature errors

Previously, it would send all manor of warnings to the error
and error-json channels. This adds a lot of overhead due to
AbuseFilter parse/eval errors. By passing immediately instead
of after calling handleError(), that overhead is avoided. Since
it still passes (e.g. returns false), any default PHP warning
logging still applies.

Change-Id: I18e60c09c2a48f2e26abab5d451bb52ea4ba7961

6 years agoMerge "TemplateParser: Use context makeKey() instead of wfMemcKey()"
jenkins-bot [Thu, 22 Oct 2015 00:11:29 +0000 (00:11 +0000)]
Merge "TemplateParser: Use context makeKey() instead of wfMemcKey()"

6 years agoTemplateParser: Use context makeKey() instead of wfMemcKey()
Timo Tijhof [Wed, 21 Oct 2015 23:55:10 +0000 (00:55 +0100)]
TemplateParser: Use context makeKey() instead of wfMemcKey()

* Use ternary shorthand.
* Remove verbose comment about APC fallback. APC always requires
  a fallback and is enforced by the method being called. Stating
  the obvious is confusing here.

Change-Id: Ie5cb3bdc60600806b01b57f1f1b352b981818b0d

6 years agoMerge "mediawiki.api: Don't hold references to finished requests forever"
jenkins-bot [Wed, 21 Oct 2015 20:54:04 +0000 (20:54 +0000)]
Merge "mediawiki.api: Don't hold references to finished requests forever"

6 years agoMerge "Replace some calls to wfGetMainCache()"
jenkins-bot [Wed, 21 Oct 2015 20:05:47 +0000 (20:05 +0000)]
Merge "Replace some calls to wfGetMainCache()"

6 years agoMerge "Fix transaction warnings on test cleanup rollback()"
jenkins-bot [Wed, 21 Oct 2015 19:54:26 +0000 (19:54 +0000)]
Merge "Fix transaction warnings on test cleanup rollback()"

6 years agomediawiki.api: Don't hold references to finished requests forever
Bartosz Dziewoński [Tue, 20 Oct 2015 22:50:20 +0000 (00:50 +0200)]
mediawiki.api: Don't hold references to finished requests forever

Follow-up to Ie614b05fbfbddca38ea201e90053bebdd58da949.

Also removed a TODO comment which no longers makes sense. (We can't
share API objects because users could abort each others' requests.)

Change-Id: I106139d6e463d7e5e3473035835eb74b18829b87

6 years agoMerge "mediawiki.api: Remove incomprehensible TODO"
jenkins-bot [Wed, 21 Oct 2015 19:23:46 +0000 (19:23 +0000)]
Merge "mediawiki.api: Remove incomprehensible TODO"

6 years agoMerge "Send X-Database-Lagged header to help with debugging"
jenkins-bot [Wed, 21 Oct 2015 19:13:55 +0000 (19:13 +0000)]
Merge "Send X-Database-Lagged header to help with debugging"

6 years agoFix transaction warnings on test cleanup rollback()
Aaron Schulz [Wed, 21 Oct 2015 19:13:22 +0000 (12:13 -0700)]
Fix transaction warnings on test cleanup rollback()

Change-Id: I85f607c7562474d57f515a947181884fccae735c

6 years agoSend X-Database-Lagged header to help with debugging
Aaron Schulz [Wed, 21 Oct 2015 00:27:27 +0000 (17:27 -0700)]
Send X-Database-Lagged header to help with debugging

Change-Id: Ib654c49a61a1279091c5da92a2bef2ad1f992d23

6 years agoMerge "Convert showPatrolFooter() to using WAN cache"
jenkins-bot [Wed, 21 Oct 2015 18:24:27 +0000 (18:24 +0000)]
Merge "Convert showPatrolFooter() to using WAN cache"

6 years agoMerge "mw.ForeignStructuredUpload: Provide category suggestions from the right wiki"
jenkins-bot [Wed, 21 Oct 2015 17:55:19 +0000 (17:55 +0000)]
Merge "mw.ForeignStructuredUpload: Provide category suggestions from the right wiki"

6 years agomediawiki.api: Remove incomprehensible TODO
Bartosz Dziewoński [Tue, 20 Oct 2015 22:48:22 +0000 (00:48 +0200)]
mediawiki.api: Remove incomprehensible TODO

Change-Id: Iae632527c8b104ddd94b89679d1dba977fddb557

6 years agoMerge "mw.ForeignStructuredUpload: Rearrange messages to always display license name"
jenkins-bot [Wed, 21 Oct 2015 15:45:13 +0000 (15:45 +0000)]
Merge "mw.ForeignStructuredUpload: Rearrange messages to always display license name"

6 years agoAdd pst option to API difftotext
Matt Russell [Mon, 31 Mar 2014 07:58:54 +0000 (07:58 +0000)]
Add pst option to API difftotext

Adds the option difftotextpst to ApiQueryRevisionsBase.php, which will perform a
pre-save transform on the supplied text, before diffing it against the
requested revision.

Bug: T53155
Change-Id: Ia480e8cd4ceeeb0b2812dc8ec96650adb83c03af

6 years agoApiQueryAllRevisions: Actually use 'start' and 'end'
Brad Jorsch [Wed, 21 Oct 2015 14:23:37 +0000 (10:23 -0400)]
ApiQueryAllRevisions: Actually use 'start' and 'end'

No idea how that got missed.

Bug: T116177
Change-Id: I69cb4d6ce12fe39ab5683f7791d00ee16958981d

6 years agoMerge "Sync up with Parsoid parserTests."
jenkins-bot [Wed, 21 Oct 2015 12:55:34 +0000 (12:55 +0000)]
Merge "Sync up with Parsoid parserTests."

6 years agoBetter phrasing for the contentmodelediterror message
Amir E. Aharoni [Wed, 21 Oct 2015 11:50:11 +0000 (14:50 +0300)]
Better phrasing for the contentmodelediterror message

Change-Id: Ie69642f8ae6993d7bb08b785229321ed04428502

6 years agoConvert showPatrolFooter() to using WAN cache
Aaron Schulz [Wed, 21 Oct 2015 11:06:42 +0000 (04:06 -0700)]
Convert showPatrolFooter() to using WAN cache

Change-Id: I55503eab91d0c64b2dcbc86257088a3eac52a2a1

6 years agomw.ForeignStructuredUpload: Rearrange messages to always display license name
Bartosz Dziewoński [Wed, 21 Oct 2015 10:25:52 +0000 (12:25 +0200)]
mw.ForeignStructuredUpload: Rearrange messages to always display license name

See the task for screenshots.

Bug: T116046
Change-Id: I3dc021713c460e4cd639b7d85545ad4b5afe514b

6 years agoReplace some calls to wfGetMainCache()
Aaron Schulz [Wed, 21 Oct 2015 06:52:07 +0000 (23:52 -0700)]
Replace some calls to wfGetMainCache()

Change-Id: I9ba8fd5918877af6312b0854634bd36211438f00

6 years agoRemove wgAlwaysUseTidy from ExpandTemplates
saper [Thu, 15 Oct 2015 07:08:02 +0000 (09:08 +0200)]
Remove wgAlwaysUseTidy from ExpandTemplates

Fixes ConfigException:

Exception encountered, of type "ConfigException"
[1235d69e] index.php/Special:ExpandTemplates ConfigException
from line 53 of
GlobalVarConfig::get: undefined option: 'AlwaysUseTidy'
i includes/specialpage/SpecialPage.php(384):

Change-Id: Iba16f12f50f7427533f89817eb40f46a2ab58ec4

6 years agoMerge "Improve MultiWriteBagOStuff::merge() cross-DC performance"
jenkins-bot [Wed, 21 Oct 2015 05:06:44 +0000 (05:06 +0000)]
Merge "Improve MultiWriteBagOStuff::merge() cross-DC performance"

6 years agoImprove MultiWriteBagOStuff::merge() cross-DC performance
Aaron Schulz [Wed, 21 Oct 2015 04:50:27 +0000 (21:50 -0700)]
Improve MultiWriteBagOStuff::merge() cross-DC performance

Implement merge() by getting a lock on the tier 1
cache, getting it's value, generating the new one,
writing to all tiers, and then unlocking tier 1.
This is done by just using the stock mergeViaLock().

This means that if tier 1 is in the same DC, the
other tiers only need 1 request each, just for set().

Change-Id: I4b0c303ef3b86b63e7630032ed0b010e79706324

6 years agoMerge "Handle revisions with different content models in EditPage"
jenkins-bot [Wed, 21 Oct 2015 04:08:02 +0000 (04:08 +0000)]
Merge "Handle revisions with different content models in EditPage"

6 years agoMerge "Improve documentation of $wgShowRollbackEditCount"
jenkins-bot [Wed, 21 Oct 2015 03:58:33 +0000 (03:58 +0000)]
Merge "Improve documentation of $wgShowRollbackEditCount"

6 years agoresourceloader: Remove CacheEpoch from MessageBlobStore::getFromDB
Timo Tijhof [Tue, 20 Oct 2015 21:14:33 +0000 (22:14 +0100)]
resourceloader: Remove CacheEpoch from MessageBlobStore::getFromDB

CacheEpoch isn't meant for this (it's meant for page cache), I can't
imagine a scenario in which we'd want to bump that to invalidate
MessageBlobStore. It should be standalone and can be easily cleared
if needed by truncating the relevant table (it's automatically

This also removes wfTimestamp/DateTime overhead.

Change-Id: Iab06edbf71f20f3430207a80df90131c79dc03a7

6 years agomw.ForeignStructuredUpload: Provide category suggestions from the right wiki
Bartosz Dziewoński [Tue, 20 Oct 2015 22:32:19 +0000 (00:32 +0200)]
mw.ForeignStructuredUpload: Provide category suggestions from the right wiki

Also check for category existence on the right wiki, and generate
links pointing to the right wiki. Usually.

Bug: T116075
Change-Id: I85da301db4cb407b011277b0c00eb09a8bf3829f

6 years agoImprove documentation of $wgShowRollbackEditCount
Timo Tijhof [Wed, 21 Oct 2015 01:57:32 +0000 (02:57 +0100)]
Improve documentation of $wgShowRollbackEditCount

There were a few grammatical errors, and ambiguities.

Change-Id: I49f998c3d2a693bd755c1aaa4cf08bc5fd5fd505

6 years agoAdd IDatabase::isReadOnly() method
Aaron Schulz [Tue, 20 Oct 2015 23:42:02 +0000 (16:42 -0700)]
Add IDatabase::isReadOnly() method

Also made getReadOnlyReason() protected as it has no outside
callers and is not part of IDatabase.

Change-Id: If6694a19df038af645a97f701397a536570d1b42

6 years agoMerge "Make DB handles inherit configured read-only mode"
jenkins-bot [Tue, 20 Oct 2015 23:37:22 +0000 (23:37 +0000)]
Merge "Make DB handles inherit configured read-only mode"

6 years agoMerge "Remove $wgAjaxWatch configuration variable"
jenkins-bot [Tue, 20 Oct 2015 23:32:32 +0000 (23:32 +0000)]
Merge "Remove $wgAjaxWatch configuration variable"

6 years agoMake DB handles inherit configured read-only mode
Aaron Schulz [Sat, 10 Oct 2015 00:22:14 +0000 (17:22 -0700)]
Make DB handles inherit configured read-only mode

LBFactory inherits $wgReadOnly, the LBs inherit
any LBFactory read only mode, and Database objects
inherit any LB read-only mode.

Add some methods callers can use to check if
a DB/LB handle is read-only before trying writes.

* Fix 5ec1e47475 regression where readOnlyBySection
  read-only mode would not affect wfReadOnly() but only
  lagged-slave read-only mode for LBFactoryMulti.
* Catch errors when getLaggedSlaveMode() is called after
  master connection and object is established.
* Make getLaggedSlaveMode() a no-op if there are no slaves.
* Make string/false logic for read-only consistent everywhere.
* Remove mLaggedSlaveMode "m" prefix.

Change-Id: Ice3224caae564aa5ffb41b424c23d1593229117a

6 years agoAdd check for RCWatchCategoryMembership before trying to access form option
aude [Tue, 20 Oct 2015 23:07:58 +0000 (01:07 +0200)]
Add check for RCWatchCategoryMembership before trying to access form option

Change-Id: Ie38e0fd703eb688267e5d19c145256dd6c8ada94

6 years agoMerge "Push post-edit RefreshLinks jobs into 'refreshLinksPrioritized'"
jenkins-bot [Tue, 20 Oct 2015 22:35:28 +0000 (22:35 +0000)]
Merge "Push post-edit RefreshLinks jobs into 'refreshLinksPrioritized'"

6 years agoMerge "mediawiki.Upload: Don't choke on nameless or dateless files"
jenkins-bot [Tue, 20 Oct 2015 22:26:34 +0000 (22:26 +0000)]
Merge "mediawiki.Upload: Don't choke on nameless or dateless files"

6 years agoPush post-edit RefreshLinks jobs into 'refreshLinksPrioritized'
Aaron Schulz [Tue, 20 Oct 2015 21:46:17 +0000 (14:46 -0700)]
Push post-edit RefreshLinks jobs into 'refreshLinksPrioritized'

Previously the 'prioritize' flag was set in getAsJobSpecification()
but the job still went into the regular 'refreshLinks' queue. Since
the parser cache was just saved, they should be fast to run. The
separate queue stops them from getting stuck behind template updates.

Change-Id: I46c5760702d862dc9288618ee5eff3897f6e838b

6 years agomediawiki.Upload: Don't choke on nameless or dateless files
Bartosz Dziewoński [Tue, 20 Oct 2015 21:55:56 +0000 (23:55 +0200)]
mediawiki.Upload: Don't choke on nameless or dateless files

Bug: T116073
Change-Id: I5919f1457b019ebc913beeb458ee3c6290223cfe

6 years agoRemove $wgAjaxWatch configuration variable
Timo Tijhof [Tue, 20 Oct 2015 21:36:53 +0000 (22:36 +0100)]
Remove $wgAjaxWatch configuration variable

This is now enabled by default.
We still check $wgUseAjax and $wgEnableWriteAPI, however.

Originally introduced in r18598 (69ea9bcf9b; MediaWiki 1.9.0; T9169).

Change-Id: I87b1926e727ae0870a0239d6e8ad87cc3a5ad72b

6 years agoMerge "Enable users to watch category membership changes #2"
jenkins-bot [Tue, 20 Oct 2015 21:41:16 +0000 (21:41 +0000)]
Merge "Enable users to watch category membership changes #2"

6 years agoMerge "Make JobQueueRedis stat calls match the DB one"
jenkins-bot [Tue, 20 Oct 2015 21:41:12 +0000 (21:41 +0000)]
Merge "Make JobQueueRedis stat calls match the DB one"

6 years agoMerge "resourceloader: Wrap another CSSMin::remap call in MemoizedCallable::call"
jenkins-bot [Tue, 20 Oct 2015 21:39:52 +0000 (21:39 +0000)]
Merge "resourceloader: Wrap another CSSMin::remap call in MemoizedCallable::call"

6 years agoSync up with Parsoid parserTests.
Subramanya Sastry [Tue, 20 Oct 2015 15:06:04 +0000 (10:06 -0500)]
Sync up with Parsoid parserTests.

This now aligns with Parsoid commit 31012bb740fea4fe6ce44464dd940d48576ed4ef

Change-Id: I525622766d702c53009d59c1a2a80a52966774fe

6 years agoMake JobQueueRedis stat calls match the DB one
Aaron Schulz [Tue, 20 Oct 2015 21:24:09 +0000 (14:24 -0700)]
Make JobQueueRedis stat calls match the DB one

It looks like someone just forgot to update these to
the newer style (e.g. sans "job-").

Change-Id: Idf953bb73ad31425c5c366d4b2169a42bd5e022d