Commit graph

253 commits

Author SHA1 Message Date
jenkins-bot
f0c88b2163 Merge "Added reentrant lock support to BagOStuff" 2015-08-25 01:28:24 +00:00
Aaron Schulz
c9b1fe1896 Added reentrant lock support to BagOStuff
* Also fixed HashBagOStuff::delete() return value for non-keys

Change-Id: I9a977750c6fc6b8406bc1c9366a6b1b34bf48b6b
2015-08-25 01:17:45 +00:00
Timo Tijhof
62e3da7e58 objectcache: Document the primary entry points people should use
There are imho too many ObjectCache methods, $wg*Cache* variables,
CACHE_ types, and wfGet*Cache() functions to know which ones
should actually be used publicly. This should make it easier to
know which ones should be used.

The difference between them was also harder to understand with the
main documentation sections about each of these living in
conceptually different places:
- classes (WANObjectCache)
- methods (ObjectCache::getMainStashInstance)
- variables (DefaultSettings: wgMainCacheType, wgMainWANCache, wgMainStash)

Also:
* Correct wfGetCache() documentation.
* Add the missing keywords for 'public' visibility.

Change-Id: I3b05fdb8b7888bf7e3f05bdca36538f3484556b8
2015-08-25 03:11:15 +02:00
Timo Tijhof
79ce51d1c9 objectcache: Make first parameter of newAccelerator optional
Makes it more convenient to use.

Change-Id: I1e11f7a759bd2816e47d1c2453cbe39b8f44b2f0
2015-08-24 23:43:19 +02:00
Aaron Schulz
4f0b16b914 Fixed BufferingStatsdDataFactory::timing() callers to use ms
* The interface actually demands this

Change-Id: I1e334c2696a8a8eca73a6ae7f71428190cad3107
2015-08-19 01:01:49 +00:00
Aaron Schulz
3bf391e842 Added statsd metrics for ObjectCacheSessionHandler
Change-Id: I86e967a027e2010f962831b55a9fceab02d8a19e
2015-08-13 13:04:28 -07:00
Aaron Schulz
08039b2df4 Restored I4afaecd8: "Avoiding writing sessions for no reason"
* After 203d2c9c11, the refresh updates should actually trigger

This reverts commit e48fec5a8a.

Change-Id: I8427ed5b3a5bb80033cbdf071a33f8a3999ecb97
2015-08-11 21:46:05 +00:00
jenkins-bot
e341ad3ec5 Merge "Fixed @var doc in MultiWriteBagOStuff" 2015-08-11 20:29:45 +00:00
Aaron Schulz
012db9afc2 Fixed @var doc in MultiWriteBagOStuff
Change-Id: I53384460b7a6ccda50a23e3ab1fc614198e82d1a
2015-08-11 13:10:28 -07:00
Ori Livneh
2d607c444b Fix argument handling in MultiWriteBagOStuff::get()
Follow-up for I7ea050a2ea.

Change-Id: Ibaa4cf01ee913c7a725d1719c00308ef3c6b0aff
2015-08-11 13:02:44 -07:00
Aaron Schulz
203d2c9c11 Moved ObjectCacheSessionHandler renewal logic to wfSetupSession()
* This should trigger more reliably than the shutdown function
  callback, which is really only there for sanity to make sure
  session close/write happens.

Change-Id: I9a1aa76de121ba8de33b3fa850bd223929fae404
2015-08-10 19:10:38 +00:00
Aaron Schulz
c3dec1193c Added BagOStuff READ_LATEST flag for replicated stores
Bug: T88493
Change-Id: I7ea050a2eabba635f2aadb4e33b6f8fbfb1b01a8
2015-08-04 16:03:37 -07:00
Ori.livneh
e48fec5a8a Revert I4afaecd8: Avoiding writing sessions for no reason
I4afaecd8 reduced the frequency at which the TTL of sessions keys is reset, on
the assumption that we were doing it a whole lot more often than necessary.
We can now assume that this assumption was false, because an uncommitted revert
of this change which I pushed to production earlier caused the rate of session
loss errors in the logs to plummet.

Bug: T102199
Change-Id: Ie67f4ca000afcf3d4f44155c13f91cd4c286866d
2015-07-31 23:30:11 +00:00
Matthew Flaschen
16c81325ed array_shift returns null on empty array, not false
Change-Id: I690f9dd0de11ff60f9cba9f401c6e456e7ba8bd6
2015-07-30 21:27:07 -04:00
Ori Livneh
1d526cae81 RedisBagOStuff: if no alternatives, skip master link status check
If RedisBagOStuff::getConnection() is able to establish a connection, only
check the master link status if automatic failover is enabled and if there are
other viable servers left to consider. If there are no servers left to
consider, or if automatic failover is not configured, just return the
connection handle without subjecting it to further tests.

This will have the side-effect of making RedisBagOStuff compatible with
Nutcracker, which does not implement the INFO command. This is because when
MediaWiki is configured to use Nutcracker, the server pool will consist of a
single server (namely, Nutcracker itself), and thus there will be no other
server to consider, so INFO will never be executed.

Change-Id: I3812ec5a0b22df122bdf44350bc0496574c02ce8
2015-07-28 16:22:57 -07:00
jenkins-bot
b95d41c62b Merge "objectcache: Ensure an integer put into memcached comes out an integer" 2015-07-09 14:20:24 +00:00
jenkins-bot
8195fd3551 Merge "Improved fail-over in ReplicatedBagOStuff for redis" 2015-07-08 06:44:42 +00:00
jenkins-bot
5de749d207 Merge "Made SqlBagOStuff set() wrap setMulti()" 2015-07-02 08:14:36 +00:00
Erik Bernhardson
508d8ee79b objectcache: Ensure an integer put into memcached comes out an integer
Some parts of resourceloader put an integer into the BagOStuff
and rejects any value it pulls back out that is not an integer.
This patch updates the memcached client behind the BagOStuff to
flag integer values and convert them back to integer when recieved.
The end result is shaving several seconds off the time it takes to
request a CSS or JS file in certain configurations.

Bug: 60563
Change-Id: Ie4dc8cf2c2cd232a2c167b4075ff4254b656bcbc
2015-07-01 03:51:55 +00:00
jenkins-bot
7bc770bbd8 Merge "Made SqlBagOStuff unset DB handles on connection errors" 2015-06-28 00:28:30 +00:00
Aaron Schulz
29dbdc3a64 Made SqlBagOStuff set() wrap setMulti()
* This also makes sure garbageCollect() is called on writes from
  time to time, since set() is used much more often

Change-Id: I5b6cc686bd6204fc3d6ff8b003be8b8d6a493e24
2015-06-24 13:16:50 -07:00
jenkins-bot
799ca9856b Merge "Made ReplicatedBagOStuff wrapping the SQL class the default stash" 2015-06-24 20:09:53 +00:00
Aaron Schulz
4825b4c08e Made ReplicatedBagOStuff wrapping the SQL class the default stash
* To make this work, a slaveOnly flag was added to SqlBagOStuff
  and it no longer prunes expired items on get(), it just treats
  them as missing. The use of garbageCollect() for the writeFactory
  cache and the use of replace() on updates already makes this
  a non-issue.
* This also makes the default $wgMainStash non-bogus.

Bug: T88493
Change-Id: I9d1f31305e08430de29a3cd521cdb10a82dffd10
2015-06-24 19:37:03 +00:00
Aaron Schulz
674858617a Made SqlBagOStuff unset DB handles on connection errors
* A "gone away" error can trigger ping(), which can fail,
  triggering a full open(). If this fails (as it often will),
  mConn is false and the DatabaseBase object is not usable.

Bug: T103435
Change-Id: Id2aaed87d2642e73c7811076da908180ee5ab5a4
2015-06-23 12:28:03 -07:00
Aaron Schulz
646fdc978c Added pre-emptive session renewal to avoid "random" submission errors
* The session will be renewed on access if it will expire in 10 minutes
* This avoids a problem both with 532ef78 + PHP <= 5.5 or any PHP >= 5.6

Bug: T102199
Change-Id: I8cad100bc35e86fa95ad144bcad338f3cb5d82a1
2015-06-18 21:51:15 +00:00
umherirrender
d8821f2b0b Fixed spacing
- Removed space after casts
- Removed spaces in array index
- Added spaces around string concat
- Added space after words: switch, foreach
- else if -> elseif
- Removed parentheses around require_once, because it is not a function
- Added newline at end of file
- Removed double spaces
- Added spaces around operations
- Removed repeated newlines

Bug: T102609
Change-Id: Ib860222b24f8ad8e9062cd4dc42ec88dc63fb49e
2015-06-17 20:22:32 +00:00
Kunal Mehta
f6e5079a69 Use mediawiki/at-ease library for suppressing warnings
wfSuppressWarnings() and wfRestoreWarnings() were split out into a
separate library. All usages in core were replaced with the new
functions, and the wf* global functions are marked as deprecated.

Additionally, some uses of @ were replaced due to composer's autoloader
being loaded even earlier.

Ie1234f8c12693408de9b94bf6f84480a90bd4f8e adds the library to
mediawiki/vendor.

Bug: T100923
Change-Id: I5c35079a0a656180852be0ae6b1262d40f6534c4
2015-06-11 18:49:29 +00:00
Timo Tijhof
7b20e0ef7a objectcache: Minor code clean up in ObjectCache.php
* Whitespace.
* Simplify logic.
* Apply coding conventions to documentation blocks (empty line
  before annotations, no empty lines between annotation, consistent
  order of annotations).

Change-Id: I3e5268d6a6295643d5725c66ea2a01bccf610ed8
2015-06-10 04:53:41 +01:00
jenkins-bot
af2f7e00c3 Merge "Added ObjectCache::getMainStashInstance() and $wgMainStash" 2015-05-19 07:44:44 +00:00
Aaron Schulz
793d01401c Added ObjectCache::getMainStashInstance() and $wgMainStash
* This provides factory/config more appropriate for stashes
* Cleaned up some neighboring config comments while at it

Bug: T88493
Bug: T97620
Change-Id: Id370ee50be6e493a4700c858df863a183abc05fd
2015-05-18 11:39:14 -07:00
Aaron Schulz
42bf202b19 Added RedisBagOStuff FIXME comments
Change-Id: I6f4f85166584439a38d632356f3ed95e4fd4fd6f
2015-05-15 23:00:16 +00:00
Aaron Schulz
e45d07d7fd Improved fail-over in ReplicatedBagOStuff for redis
Bug: T96123
Change-Id: I3f37417a1a4f010b092a7718d43bfcdfe16e8f4c
2015-05-02 13:45:41 -07:00
Aaron Schulz
63c132e050 Refactored ReplicatedBagOStuff to use generic factory methods
* Moved the class to /libs as is possible now

Change-Id: I6b724cf4b2ea627d485acb1e1882a5a04772d6f6
2015-04-29 20:08:19 -07:00
Aaron Schulz
1f48d8e193 Added ObjectCache::getMainWANInstance() helper method
Change-Id: I3d8d93b3bb6f7e06fae7adc694e6d4d851b2d8c2
2015-04-27 14:28:43 -07:00
Aaron Schulz
c7bf955bca Moved WAN cache and relayer to /libs
Change-Id: I9586d22890ce1cda7f74869ff701de73d65eaaef
2015-04-27 12:35:58 -07:00
Aaron Schulz
3a1f8b1111 Added WANObjectCache class
This class handles caching across distance sites where purges
must reach both. It also aims to make purging more reliable in
the face of network glitches and node consistent hash ejection.

bug: T88492
Change-Id: I686811b3075bf22e2f4de45127e8461e54648ead
2015-04-23 21:36:42 +00:00
Aaron Schulz
cbe67ce13b Make RedisBagOStuff support tag name hashing
Bug: T95126
Change-Id: I266dd30c93cfc44395eba5bca64f451ca77c23a4
2015-04-07 07:12:10 +00:00
Bryan Davis
1195e11a8a Move MWLogger classes to MediaWiki\Logger namespace
Move the MWLogger PSR-3 logging related classes into the
MediaWiki\Logger namespace. Create shim classes to ease migration of
existing MWLoggerFactory usage to the namespaced classes.

Bug: T93406
Change-Id: I359cc81fbd2dcf8937742311dcc7d3dee08747b0
2015-04-03 11:32:24 -07:00
Aaron Schulz
b48f51c522 Minor doc fixes
Change-Id: I80678e64cafcfd6e2c779452f466d8a630089568
2015-03-09 23:08:37 -07:00
Aaron Schulz
61df5e785f Made SqlBagOStuff avoid tripping TransactionProfiler
* Set a custom profiler with no expectations to avoid tripping
  the "0 write" expection. This avoids useless log entries.

Change-Id: Iac849a729eb36b1a8affb0dbc8b8c195fab4b03a
2015-02-27 17:45:48 +00:00
jenkins-bot
087e70d6d2 Merge "Start moving objectcache into libs/" 2015-02-25 16:04:49 +00:00
Kunal Mehta
1e3888de00 Start moving objectcache into libs/
The base BagOStuff class and some of the implementations are
not dependent on MediaWiki and can be in the libs folder.

Change-Id: I299f9abb778abc65a70461a2aff3015c02a1f04d
2015-02-25 00:22:50 -08:00
Aaron Schulz
0a873a3c28 Avoid calling rollback() in handleWriteError() if there is no trx
Change-Id: Ic3be89151160ad57acda5d95e3995a77f3835717
2015-02-24 11:34:23 -08:00
jenkins-bot
8256db3493 Merge "Removed cas() from ReplicatedBagOStuff as it is unused" 2015-02-23 19:21:39 +00:00
aude
e653640924 Make HashBagOStuff::lock() compatible with BagOStuff::lock
Fixes php strict standard error.

Bug: T90427
Change-Id: Ica2bddead9b5ad367510e898eeea1257a53b5b19
2015-02-23 12:35:55 +01:00
Aaron Schulz
40bfb9bfa0 Removed cas() from ReplicatedBagOStuff as it is unused
Change-Id: I2ff33ba806856ec4cc140a52590a922e13191bf2
2015-02-22 21:38:30 -08:00
jenkins-bot
e2e2fff1eb Merge "Made BagOStuff::cas properly optional" 2015-02-23 05:32:38 +00:00
Aaron Schulz
250f2b9e5a Made BagOStuff::cas properly optional
* merge() using the locking version by default. The callers that implement cas()
  override merge() to use the cas-based version. Those that do not no longer
  need to define the unused dummy method.
* Removed some redundant doc blocks.

Change-Id: I49f7dd5432efa8d76f4758c273f0859376ddafb7
2015-02-23 05:15:24 +00:00
Aaron Schulz
3817818aca Add a ReplicatedBagOStuff class
Bug: T88634
Change-Id: I1f7cccd6ac376055ff2b84641ff38a85571c65b0
2015-02-23 05:09:08 +00:00
jenkins-bot
014615d926 Merge "Made BagOStuff::debug protected" 2015-02-12 17:17:30 +00:00