* 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
When enabling memcached debug logs ($wgMemCachedDebug), they are
unconditionally sent to the main $wgDebugLogFile. This patch make it
possible to sent thoses specific log to an alternate file by setting
$wgDebugLogGroups['memcached']
Change-Id: I85d8ab92471ce3c31f8168dae83fe91e95e18dce
This reverts the SpecialCachedPage and formatDuration sagas, with some collateral damage here and there. All of these revisions are tagged with 'gerritmigration' and will be resubmitted into Gerrit after the Gerrit switchover. See also http://lists.wikimedia.org/pipermail/wikitech-l/2012-March/059124.html
DBABagOStuff was not refactored by r83140 which pass BagOStuff constructors
an array. This patch honor the 'dir' parameter to let you override the global
$wgTmpDirectory.
Need backport in REL1_18
* Do queries in batches of 100 rows instead of all at once. Note that if there are a lot of objects with the exact same expiry time, it might take multiple runs of the script to delete them all.
* Progress meter.
As Brion points out in <https://bugzilla.wikimedia.org/show_bug.cgi?id=29747#c7>, the shared memory functions are very buggy. In fact, eAccelerator has disabled the shared memory functions by default for awhile now. I didn't touch APC, XCache or WinCache, but I imagine they suffer from the same problems.
PHP fatal error in /usr/local/apache/common-local/php-1.18/includes/objectcache/MemcachedPhpBagOStuff.php line 91:
Call to undefined method MemCachedClientforWiki::lock()
* Fixed unintentional shortcut evaluation in MultiWriteBagOStuff::doWrite(). It would have caused writes to be skipped on the second cache if the first cache failed, now writes should be attempted on all caches.
Patch from John Du Hart: https://bugzilla.wikimedia.org/attachment.cgi?id=8849&action=diff
If XCache is present, but the xcache.var_size setting is off, we'll now consider it as xcache being disabled for CACHE_ACCEL purposes. It won't trigger view of the accelerator option in the installer, and at runtime if using CACHE_ACCEL and no other modules are available, it'll throw an error so you know that it doesn't work!