Added/removed spaces after opening/before closing parentheses
Added a space after a comma
Removed unneeded parentheses in condition
Change-Id: I306091347ccaaf11dee0cdfda3019cb0c12be51b
By PSR2 PHP Standard, the files should ends with exactly one newline.
Some of our files have 2 or more and some other were missing a newline.
Fix almost all occurences of CodeSniffer sniff:
PSR2.Files.EndFileNewline.TooMany
I have not fixed the selenium files, I believe we will drop them.
Change-Id: I89fca8c1786fee94855b7b77bb0f364001ee84b6
Changes in the 1.20.x branch altered the add method to check for the return value of get against
false. Xcache 3.x returns NULL for unset values and so this check was erroneously determining that
all values are set when they were not.
This was causing basic ObjectCache usage to fail.
Change-Id: I0975e5c6a60c2813dc2d02aca84245807b8fb828
Since that revision, messages sent through wfDebugLog() and without
a corresponding entry in $wgDebugLogGroups will be prefixed there
before being sent to wfDebug(), so it's no longer needed to have the
exact same checks for the debug messages in memcached clients.
Change-Id: Ia690a87bc6d1994fe371816470efde6d09e3b881
* merge() will use CAS if supported or use locking otherwise
* The lock()/unlock() methods now have a default implementation
* added unit tests for merge
Change-Id: Ic27088488f8532f149cb4b36e156516f22880134
Also factor out consistent hash code from Redis and the new application
into a class called ArrayUtils. The name "ArrayUtils" is from
I0f4e7d7c, I expect that change will be rebased on top of this one at
some point.
Change-Id: I9375087f4d7a6e8e629d97bfb6b117d9cb7d1bcf
Added a multi-server feature to SqlBagOStuff.
Tests done:
* With both the "shard" and multi-server features enabled and
$wgAllDBsAreLocalhost, tested getMulti, set, incr, decr, keys,
garbageCollect, deleteAll. Tested wiki page views with
$wgMainCacheType set to such a cache.
* Tested connection errors.
* In the plain CACHE_DB configuration, tested wiki page views.
Change-Id: Ifba0d276ef724cc9b33f687bc0adae4637054328
* Preserve TTL in objectcache incr() method for APC, XCache and DBA.
Do not serialize numeric values, since it breaks the counters.
* Also gave some DBABagOStuff functions explicit visibility.
Change-Id: I13856832f418c843afc8e42a6d77686331f6cb41
With sharding, failover and consistent hashing. Only supports the
extension (phpredis), since the pure PHP library Predis had about a
billion files and it made my eyes hurt.
Change-Id: I90fb4a41d15265b9c22f8e32ecd1d956f89f3ce8
When $wgSessionsInObjectCache is enabled, use a configurable expiry time
instead of a hard-coded one-hour expiry.
Change-Id: Ia51962176d30fd87e298c47ec347a143cad80772
* Introduce $wgSessionCacheType to allow the session storage to be
configured independently of $wgMemc.
* Renamed $wgSessionsInMemcached to $wgSessionsInObjectCache to reflect
the new versatility.
* Modernized the relevant code, removing the explicit require_once(),
used the autoloader instead. Moved it to ObjectCacheSessionHandler.
* Tested with memcached, external sharded MySQL and APC, it all seems to
work just fine.
Change-Id: I473334bb56cafb4e21ac1c1304d69095676fc0c4
* When there is a read error, close the socket and mark the server dead,
instead of continuing to send requests through it, causing a protocol
violation.
* Also check for write errors.
* Increase the default stream and connect timeouts from 100ms to 500ms.
* Remove the commented-out _safe_fwrite() code that I wrote in 2005,
that PHP bug is fixed now, so writes can be handled the same way as
reads.
* Fix E_STRICT errors in get_multi() due to a resource being used as an
array index.
* For performance, flush the read buffer less often (only on persistent
connect).
* Move the fread() loop from _load_items() into its own new function.
* Be stricter about stripping expected newlines, don't just run trim() on
everything.
* Make MemCachedClientforWiki into a simple alias since the distinction
with MWMemcached was lost many years ago. We even renamed the class
"MWMemcached".
* Remove vim modeline made incorrect by 19d6293 (Nov 2009).
Change-Id: I81de31049b87038999e37054d8d174a782c78a68
MemcachedClient output a generic error message: "Error parsing memcached
response\n" whenever it is not able to read from the socket. It is also
lacking the remote peer it is reading from.
This patch add a new message when fgets( <socket> ) return false, which
means we could not read from the file pointer. It also get the stream
remote name for debugging purposes.
Change-Id: I9b8a25a03af0d730aa3b4830a44b1ea739343274
MemcachedClient output a generic error message: "Error parsing memcached
response\n" whenever it is not able to read from the socket. It is also
lacking the remote peer it is reading form.
This patch add a new message when fgets( <socket> ) return false and
attempt to get the remote peer address / port to append to the error
message. Might help us find out which memcached server is wild.
Change-Id: If918e824970aaa8231078e42fd28d31e8dd4e319
When inserting XML elements inline <such as this one>, doxygen chokes
about it not being known. Simply enclosing the tag in double quotes
prevents doxygen from emitting a warning.
Also enclosed a few invalid functions calls such as \. and double quoted
the HTML entities such as &foobar;
Change-Id: I4019637145e683c2bec3d17b2fd98b0c50a932f1
* SqlBagOStuff should not turn off automatic transaction
control just like that. Keep previous
connection for PostgreSQL and SQLite
* 94633ff448 introduced
rollback on error to restore sanity
for the connection. Don't do this
if you are in the middle of INSERT IGNORE
and we have a savepoint open.
Making sure query syntax errors don't
get silenced by our "wonderful" implementation
of INSERT IGNORE is bug 35572.
Change-Id: I841b03895e1189c47307fefb1516c4c7c4102e25
* When using a persistend ID in the constructor, the object is effectively shared among
the callers using that ID. If we always use __CLASS__, then this breaks when different
BagOStuffs may be used. Instead, a hash of the settings is now used.
See http://www.php.net/manual/en/memcached.construct.php.
* Don't keep adding servers to the pool, as the object is shared among callers. Once one thread
initializes the object, it will already be initialized by the next thread. Calling addSever()
again will cause an increasing number of duplicate servers to exist in the data structure, and
thus an increasing number of socket connections over time.
* Also, use addServers() instead of multiple addServer() calls per
http://www.php.net/manual/en/memcached.addserver.php.
Change-Id: I0e7510320cb79d9f152e8958ddd50400fa9da37f
We had two way to get a temporary directory:
- $wgTempDirectory: more or less stable accross sessions
- wfTempDir(): set through environnement variable and could potentially
vary from a session to another one thanks to tempnam()
This patch makes wfTempDir() to always use the global $wgTempDirectory
first when it is available. Thus explicitly overriding tempnam() or any
environnement variable such as TMP or TEMP.
Hence, people who don't have access to a system wide directory
specificed by their environnement (such as /tmp) can specify an
alternative straight from the MediaWiki configuration.
The patch remove references to $wgTmpDirectory and replace them with
calls to wfTempDir(). Make wfTempDir() use $wgTmpDirectory first.
The default setting of $wgTmpDirectory was removed in favor of having it
initialized through Setup.php by calling wfTempDir.
Note: this may also address Bug 36475 - Generating thumbnails does not
work when there is no access to /tmp
Change-Id: Ifdc79e9c5d95f978025b237a5eeb95fd75092f46
* Made getMulti() only return keys for items that exists.
* Made add() return false if the item already exist.
* Made replace() return false it the item does not already exist.
Change-Id: Idb9d9843ace0c81f71abfc22b90e30eb33d7579d
* Fixed the check for igbinary presence. It's not enough for the
extension to be loaded, the memcached extension also needs to be
compiled with --enable-memcached-igbinary.
* When delete() is attempted on a key that doesn't exist, return true,
as in the other BagOStuff implementations.
Change-Id: I298952f4a9925d860fa5673f632d073b1f20aa47
* Introduced a common base class for the two memcached clients, called
MemcachedBagOStuff.
* Moved the expiry time normalisation from MemcachedClient.php to
MemcachedBagOStuff since libmemcached needs the same workaround.
Change-Id: I507d4ec5a7fd863ae64a94f2c453981f9f03746c