Commit graph

2684 commits

Author SHA1 Message Date
Timo Tijhof
09cbebb224 WANObjectCache: Change getWithSetCallback() signature to key/ttl/callback/opts
* Put 'checkKeys' param in opts array instead of as a separate parameter.
  It's neat to not have to skip unnamed/positional arguments that are optional.
* Move TTL to be before callback instead of after. This avoids dangling integers
  toward the bottom of a large code block that have no obvious meaning.
  Matches BagOStuff::getWithSetCallback.

Add unit test for lockTSE to confirm

Change-Id: I60d6b64fc5dff14108741bafe801fd1fde16d1df
2015-10-07 18:03:15 -07:00
Timo Tijhof
14788f9aab objectcache: Fix flaky unit test
Change-Id: Id7d3b75248a42e2e82a51d70a3ee1479f0507685
2015-10-07 17:23:46 -07:00
jenkins-bot
e2af4108ae Merge "Make WikiMap fall back to sites if a site couldn't be found using $wgConf" 2015-10-07 16:25:50 +00:00
Marius Hoch
3d85fde609 Make WikiMap fall back to sites if a site couldn't be found using $wgConf
The mapping is not very good, but should be good enough, given
that only the URL parts are really being used.

Bug: T114107
Change-Id: I8186140aed5620cf7b4ba84aa4c9492c61f406d0
2015-10-07 14:59:31 +02:00
Ori Livneh
da3443bfa2 Add MemoizedCallable for APC-backed function memoization
Add a simple class to `libs/` for memoizing functions by caching return values
in APC. I decided not to make this an external library just yet because I see
this as potentially a part of a larger functional programming library.

Doesn't use APCBagOStuff for two reasons: (1) avoid dependency on MediaWiki
code; (2) ability to pass third &$success parameter to apc_store, to
distinguish between cache misses and cached false values.

Use this in ResourceLoaderFileModule to cache CSSMin::remap.

Change-Id: I00a47983a2583655d4631ecc9c6ba17597e36b5f
2015-10-06 23:35:03 +00:00
jenkins-bot
638c452825 Merge "Add more test cases to OldChangesListTest" 2015-10-06 18:29:31 +00:00
aude
c6373c55d7 Add more test cases to OldChangesListTest
* test for watchlist css class
* test for number of watching users

Change-Id: I6aea1f5b8479ac3656f0ba27ebfa3800d9bffb4c
2015-10-06 15:26:52 +01:00
Aaron Schulz
355ba8530e objectcache: Add BagOStuff::getWithSetCallback() convenience method
Change-Id: I9cc162ff1cc48c1c500f2999327bd18ba235bfd0
2015-10-05 17:26:32 -07:00
Aaron Schulz
db0b9ef264 Make WANObjectCache sets account for slave lag
* This gets lag information that is useful when
  the calling code is about to run queries that
  will have their results cached.
* This is now used in place of trxTimestamp() for
  WANObjectCache set() and getWithSetCallback().
* The WAN cache will use a low TTL if the lag is
  too high to avoid caching stale data for weeks.
* Bumped MAX_COMMIT_DELAY as nothing enforces it.

Bug: T113204
Change-Id: I2a95b4088cff42d6e980351555f81a4b13519e24
2015-10-05 16:45:13 -07:00
Marius Hoch
2c03cd32d0 Fix DatabaseSqlite::__toString
Failed with "Catchable fatal error: Object of class
PDO could not be converted to string in".

The message I used was a rather arbitrary choice, but
I think it makes sense.

Bug: T114709
Change-Id: I0023fae3fa2a0c2b37cb3c34751706fe0d481d19
2015-10-05 20:54:11 +00:00
jenkins-bot
2eaaf817eb Merge "Fix DatabaseMysqlBase.php IDEA errors" 2015-10-05 20:20:17 +00:00
jenkins-bot
64222e175a Merge "Fix the last Generic.Files.LineLength phpcs failures" 2015-10-05 12:39:24 +00:00
Aaron Schulz
b11abb540f Fix DatabaseMysqlBase.php IDEA errors
* Declare base mysqlRealEscapeString()
* Fix MySQLField::tableName() return value

Change-Id: I1277166e741e69cb1c045b3baa6ed8de664e9255
2015-10-03 18:28:17 -07:00
umherirrender
eca8c2a72f Rename ObjectFactoryTest_Fixture to camel case name
Change-Id: Ib909c4f694b9774a0983abbb23bfd38ed8c05d5b
2015-10-03 21:29:17 +02:00
Amir E. Aharoni
4490b5b5ec Fix the last Generic.Files.LineLength phpcs failures
In both cases the long lines are inside method documentation,
and because @codingStandardsIgnoreStart comments only
work with // and not /*, they have to be outside the method comment.

Bug: T102614
Bug: T114213
Change-Id: I7343e1cf662c5bf12a5e4385646c5c2c4a798260
2015-10-03 18:08:49 +00:00
Amir E. Aharoni
c50cbe48ab Fix remaining Generic.Files.LineLength failures
Except the ones for which there is no clear way to fix
because of T114213.

Bug: T102614
Change-Id: I94a1fc7c890c82a36f0b51e42d311585c275775c
2015-10-03 17:23:07 +00:00
Amir E. Aharoni
94068c3e81 Fix Generic.Files.LineLength phpcs check under phpunit/includes/api
Bug: T102614
Change-Id: Ic0b3d9b58fee8dc20a976ae65dcb7072a3afc3b1
2015-10-03 17:18:05 +00:00
Amir E. Aharoni
bfdd3369c2 Fix Generic.Files.LineLength phpcs check in files under phpunit/includes
Bug: T102614
Change-Id: Iee3df5f064f595ecebe8210cc936bc3d20a122c9
2015-10-03 17:13:29 +00:00
Amir E. Aharoni
93a673d24a Fix spelling of "fragment" in test descriptions
Change-Id: I97ca75b9c587443e195b1c162dcfee7880a5e226
2015-10-03 12:30:59 +00:00
Amir E. Aharoni
149d16d597 Make lines short to pass phpcs in WikiReferenceTest.php
Bug: T102614
Change-Id: I557744a48a6a6889fde0b050d8e646ba081d5504
2015-10-03 12:30:48 +00:00
Amir E. Aharoni
d461d5c8af Make lines short to pass phpcs in WikitextContentTest.php
Bug: T102614
Change-Id: Id5f12d4cca1d952580d2bb68fdbcb3cfb2467085
2015-10-03 12:30:38 +00:00
Amir E. Aharoni
e77af93e83 Add @codingStandardsIgnoreStart to 5 files under tests/phpunit/includes
To pass phpcs.

Bug: T102614
Change-Id: I4c7d60d26112c7ba67b66f1923ce945e96175d15
2015-10-03 12:30:29 +00:00
Aaron Schulz
169b7b98b5 Added replication=async option to FileBackendMultiWrite
* This will defer writes to non-master backends till the
  end up the web request. This is useful for multi-DC setups.

Bug: T112708
Change-Id: I118c07764dd4a4f4f2590d4548238df12860e750
2015-10-01 23:30:41 +00:00
Amir E. Aharoni
dc71f6cf02 Make lines short to pass phpcs in media tests PHP files
Some lines that weren't too long are also broken up
for consistency and readability.

Bug: T102614
Change-Id: I36e3225e135b58bc22705afbb888b06f93b5a9a8
2015-10-01 19:40:31 +00:00
Amir E. Aharoni
715abaa6b6 Make lines short to pass phpcs in parser tests PHP files
Bug: T102614
Change-Id: I14a28815af83efd38f04def8eb7d42ef124ab918
2015-10-01 19:40:18 +00:00
Amir E. Aharoni
733c12a799 Use correct comment format for codingStandardsIgnoreStart
Apparently, codingStandardsIgnoreStart doesn't work with /*,
and does work with //.

Bug: T113852
Change-Id: I2e7f200617091acc8a79be09763a91c28f5045f2
2015-10-01 22:37:51 +03:00
Amir E. Aharoni
3cd3b7ac9f Make lines short to pass phpcs in 3 files under tests/phpunit/includes/
Bug: T102614
Change-Id: I8f3d570fb6e9866d4376f42d4efa05f9c5e7f14d
2015-10-01 19:00:40 +00:00
Amir E. Aharoni
c369defa97 Add @codingStandardsIgnoreStart to pass phpcs in 2 files in tests/phpunit/includes
Change-Id: I7f551dafcf437cc23aa9aed24f9e4d385816a0a0
2015-10-01 18:45:28 +00:00
Marius Hoch
725a203bc1 Remove unused minor and major in WikiReference
Given that the class is not constructed anywhere outside
of core the constructor can be altered without having to
worry about b/c.

Change-Id: Ie49c43a1724f05cb95a296dc0fad0f1c587d80ef
2015-10-01 19:12:07 +02:00
Aaron Schulz
ba00bd342b Made LBFactorySimple set "master" flags like LBFactoryMulti
* wfGetDB( DB_MASTER )->getLBInfo() now shows the master flag
* A corresponding slave flag was also added
* Added a few badly needed LBFactory/LoadBalancer tests

Change-Id: I9254b12cff63af7d754a3a14c5db44276f58d280
2015-10-01 05:11:14 +00:00
Brad Jorsch
77d62edef3 Refactor hashing utility functions from MWCryptRand and make public
MWCryptRand already has some useful utility functions wrapping PHP's
hash() and hash_hmac(). Let's make them public so we can use them from
other code.

But since "MWCryptRand" isn't really a good place for hashing functions,
let's move them to "MWCryptHash" instead.

Change-Id: I7542c719ac72beba7b0f6aa170bdb4c69fa6beab
2015-10-01 01:18:23 +00:00
Brad Jorsch
847f92ca23 API: Remove warning about continuation change
Change-Id: I2a69e8ae7dc7df915ceaaeed740b74d55f9207ce
2015-09-30 19:48:52 +00:00
Amir E. Aharoni
f9d0c98e16 Make lines short to pass phpcs in 2 files under tests/phpunit/includes/
Bug: T102614
Change-Id: I21a7cbc40a3015c3d6cbea1b9d7df58a358beb6a
2015-09-30 16:17:35 +00:00
Amir E. Aharoni
b59ad5811b Make lines short to pass phpcs in BagOStuffTest.php
Bug: T102614
Change-Id: I125cf7ec294818ae4c7741acf24a40980448daa9
2015-09-30 16:01:54 +00:00
jenkins-bot
2cb893c085 Merge "Introduce CategoryMembershipChange" 2015-09-30 12:44:37 +00:00
jenkins-bot
9fd987171d Merge "Added DeleteLinksJob to support purging backlinks via job runners" 2015-09-30 12:35:24 +00:00
Aaron Schulz
aaa7df96a4 Added testStaleSet() WAN cache test
Change-Id: Ib8565c48af09af0df1809e877fde9d4d6c7e7038
2015-09-29 18:14:48 -07:00
jenkins-bot
9dfb45cc7c Merge "Fix Memcached key decode" 2015-09-30 00:43:19 +00:00
Aaron Schulz
c0cb80beac Added DeleteLinksJob to support purging backlinks via job runners
* This jobs should only be constructed via relevant Content object,
  e.g. the result of enqueueUpdate() being called on a DataUpdate
  returned by Content::getSecondaryUpdates().
* Also modified LinksDeletionUpdate to support a $pageId parameter.
* LinksDeletionUpdate can now be enqueued to a DeleteLinksJob.

Change-Id: I650dcf0bd172ede0d61357ec158a4704ae1f2033
2015-09-29 17:40:19 -07:00
Timo Tijhof
047b60b96d resourceloader: Store relative instead of absolute paths in module_deps
Make paths stored in the module_deps table relative to $IP. This ensures that when
the MediaWiki install path changes and/or if the location of the extension or skins
directory changes, that ResourceLoader's internal model is still accurate.

Previously when these paths change, ResourceLoader would exhibit various bugs.

1. Unable to detect changes in the module (if the directory no longer exists).
2. Point #1 is usually preceeded by one last cache invalidation as the content hash
   of the file path changes (from a valid hash to an empty string).
3. Unnecessary cache invalidation (if both old and new directories exist). This
   happens when a file is both an entry point (in the 'scripts' or 'styles' array)
   and also a file dependency. At first they are de-duplicated by array_unique.
   But after the disk path changes, the next check will result in the old path
   being fetched from module_deps, and the new path from the live configuration.
   This causes two changes that result in needless cache invalidation:
   - The hash list contains one more item (T111481).
   - The hash list contains both the old and new version of a file.
     (or even alternate versions, e.g. when a change is backported to the old
     wmf branch; it also affects wikis on the new branch due to the stale
     file path still in the database).

It seems unusual to move a MediaWiki install, and usually we recommend third
parties to run update.php if site administrators do move their wiki. However
Wikimedia's deployment system implicitly moves the MediaWiki install continously
from e.g. "/srv/mediawiki/php-1.26wmf5" to "/srv/mediawiki/php-1.26wmf6".

This caused virtually all ResourceLoader caching layers to get invalidated every
week when another wmf-branch is deployed, thus breaking these file paths, which
changes the version hash, which then invalidates the cache.

Bug: T111481
Change-Id: I173a9820b3067c4a6598a4c8d77e239797d2659c
2015-09-30 00:25:27 +00:00
addshore
2fb2a3f14b Introduce CategoryMembershipChange
This is split from:
I03516bb34144d95e5f25c46ae98ab70ce699b31b

Change-Id: I27539d25ef3e81cf991657dffc0a62b9719d21d8
2015-09-29 23:59:34 +01:00
Brad Jorsch
c3dc398514 FauxResponse: Honor cookie options, and other cleanup
We have this nice class for unit testing cookie-setting, but the
cookie-setting method ignores all the parameters! Fix that. Also provide
accessors to check the entire set of cookie data, and the set cookies as
a whole.

While this does change the semantics of FauxRequest::getcookie() in that
the name now needs to be prefixed, no extension in Gerrit uses this
method so we should be fine.

Also clean up the case of the setCookie and getCookie methods while
we're at it. Since PHP method names are case-insensitive, this doesn't
even break compatibility with extensions.

Change-Id: Ib44a074bf9796bc0b470d557e39465792f399d30
2015-09-29 22:45:56 +00:00
Matthias Mullie
8ca796ea99 Fix Memcached key decode
Flow had a key: flowdb:flow_ref:wiki:by-source:v3:Parser\'s_"broken"_+_(page)_&_grill:testwiki:1:4.7
the '+' in there was not being encoded (it only does /[\x00-\x20\x25\x7f]+/)
but coming back, it was decoded into ' '.
getMulti() shows a key=>value array or results. Since key was different,
we couldn't find what we had requested.

Bug: T110326
Change-Id: Ia92edd73d0eb7fe0d35e38e7e7af8174fb85cbcc
2015-09-28 19:37:53 +02:00
Vivek Ghaisas
c54766586a Fix issues identified by SpaceBeforeSingleLineComment sniff
Change-Id: I048ccb1fa260e4b7152ca5f09b053defdd72d8f9
2015-09-26 23:06:52 +00:00
jenkins-bot
e3983a08fd Merge "Remove excess newlines at the end of files" 2015-09-26 22:25:48 +00:00
Ricordisamoa
4f72efe8d8 Remove excess newlines at the end of files
Many of them added with commit 776c865077

Change-Id: I481b15c45ead1f5f482e120cb40ea8f3297543cf
2015-09-27 00:02:05 +02:00
jenkins-bot
2712fc2913 Merge "Wrap some long strings in tests/" 2015-09-26 21:52:43 +00:00
umherirrender
c572d18661 Fixed spacing
- Removed space after cast
- Removed spaces in array index
- Removed double spaces
- Added spaces around string concat
- Fixed mixed tabs and spaces at begin of line

Change-Id: I38e849723f055d2d4c05cba72f5c245a28e8d5da
2015-09-26 20:44:54 +00:00
Reedy
58f0a7ee4e Wrap some long strings in tests/
Change-Id: I89d53c5051e5ee4bd8624df8ee2b25993090a7df
2015-09-26 21:01:59 +01:00
Amir E. Aharoni
76ae9acec3 Make line shorter to pass phpcs in LinkerTest.php
There are other linkes here ythat will require a different treatment.

Bug: T102614
Change-Id: Ia0c75d11a85a931d37941471f9c9bdc16fda28e1
2015-09-26 18:20:11 +00:00