Skip to content
This repository has been archived by the owner on Jan 13, 2022. It is now read-only.

Commit

Permalink
Update mediawiki from 1.24.0 to 1.26.1
Browse files Browse the repository at this point in the history
* Use pristine MediaWiki tarball, copy in LocalSettings.php.
* Remove $wgDisableCounters = true;, code was removed from MW core.
* Remove patch to include LCStoreStaticArray, in MW Core as of 1.26.
* Don't live hack LocalisationCache.php to use $storeClass.
  = 'LCStoreStaticArray';, just set it in LocalSettings.php.
* Update MySQL patch file.
  • Loading branch information
reedy committed Dec 22, 2015
1 parent 3e4e8bf commit 4c4a90f
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 127 deletions.
17 changes: 1 addition & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,29 +177,14 @@ Magento
- Product with options
- Product reviews

Mediawiki
MediaWiki
---------

The main page is the Barack Obama page from Wikipedia; this is based on the
Wikimedia Foundation using it as a benchmark, and finding it fairly
representative of Wikipedia. A few other pages (HHVM, talk, edit) are also
loaded to provide a slightly more rounded workload.

- MySQL-based view counters have been disabled: they are incredibly inefficient,
unlikely to be used in any high-concurrency deployment (for example, Wikipedia
disables them), and will be removed in a future release of Mediawiki.
- Localisation caching has been switched from MySQL to file-based. MySQL-based
L10N caching 'just works', but it is also inefficient (1 query per localizable
string per page view), and unlikely to be used in high-concurrency deployments.
This setting is also used by Wikipedia.
- If `--apply-patches` is specified, the existing file cache is replaced with a
more efficient version that simply uses static PHP arrays. This has been
submitted to the upstream project at https://phabricator.wikimedia.org/T99740

Each of these modifications improves performance under all tested runtimes: PHP5,
PHP7, and HHVM. The concurrency issues with the MySQL-based view counters and
L10N caching are because of contention within MySQL server.

Profiling
=========

Expand Down
158 changes: 158 additions & 0 deletions targets/mediawiki/LocalSettings.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
<?php
# This file was automatically generated by the MediaWiki 1.24.0
# installer. If you make manual changes, please keep track in case you
# need to recreate them later.
#
# See includes/DefaultSettings.php for all configurable settings
# and their default values, but don't forget to make changes in _this_
# file, not there.
#
# Further documentation for configuration settings may be found at:
# https://www.mediawiki.org/wiki/Manual:Configuration_settings

# Protect against web entry
if ( !defined( 'MEDIAWIKI' ) ) {
exit;
}

## Uncomment this to disable output compression
# $wgDisableOutputCompression = true;

$wgSitename = "mw_bench";
$wgMetaNamespace = "Mw_bench";

## The URL base path to the directory containing the wiki;
## defaults for all runtime URL paths are based off of this.
## For more information on customizing the URLs
## (like /w/index.php/Page_title to /wiki/Page_title) please see:
## https://www.mediawiki.org/wiki/Manual:Short_URL

$wgScriptPath = "/";
$wgScript = "$wgScriptPath/index.php";
$wgArticlePath = "index.php?title=$1";

## The protocol and server name to use in fully-qualified URLs
#$wgServer = "";

## The URL path to static resources (images, scripts, etc.)
$wgResourceBasePath = $wgScriptPath;

## The relative URL path to the logo. Make sure you change this from the default,
## or else you'll overwrite your logo when you upgrade!
$wgLogo = "$wgScriptPath/resources/assets/wiki.png";

## UPO means: this is also a user preference option

$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO

$wgEmergencyContact = "apache@localhost";
$wgPasswordSender = "apache@localhost";

$wgEnotifUserTalk = false; # UPO
$wgEnotifWatchlist = false; # UPO
$wgEmailAuthentication = true;

## Database settings
$wgDBtype = "mysql";
#$wgDBserver = "localhost";
$wgDBname = "mw_bench";
$wgDBuser = "mw_bench";
$wgDBpassword = "mw_bench";

# MySQL specific settings
$wgDBprefix = "";

# MySQL table options to use during installation or update
$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";

# Experimental charset support for MySQL 5.0.
$wgDBmysql5 = true;

## Shared memory settings
$wgMainCacheType = CACHE_NONE;
$wgMemCachedServers = array();

## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads = false;
#$wgUseImageMagick = true;
#$wgImageMagickConvertCommand = "/usr/bin/convert";

# InstantCommons allows wiki to use images from http://commons.wikimedia.org
$wgUseInstantCommons = false;

## If you use ImageMagick (or any other shell command) on a
## Linux server, this will need to be set to the name of an
## available UTF-8 locale
$wgShellLocale = "en_US.utf8";

## If you want to use image uploads under safe mode,
## create the directories images/archive, images/thumb and
## images/temp, and make them all writable. Then uncomment
## this, if it's not already uncommented:
#$wgHashedUploadDirectory = false;

## Set $wgCacheDirectory to a writable directory on the web server
## to make your wiki go slightly faster. The directory should not
## be publically accessible from the web.
#$wgCacheDirectory = "$IP/cache";

# Site language code, should be one of the list in ./languages/Names.php
$wgLanguageCode = "en";

$wgSecretKey = "cf5ad1a57ccc0e5aa6a56de5b7e7e68b280f7504592b43fdf6cdb88f8dc2f5d1";

# Site upgrade key. Must be set to a string (default provided) to turn on the
# web installer while LocalSettings.php is in place
$wgUpgradeKey = "7f5c21ae501bb77a";

## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "";
$wgRightsText = "";
$wgRightsIcon = "";

# Path to the GNU diff3 utility. Used for conflict resolution.
$wgDiff3 = "/usr/bin/diff3";

# Default behavior is to do a MySQL query *for each translatable string
# on every page view*. This is just insane.
$wgLocalisationCacheConf["storeClass"] = "LCStoreStaticArray";

## Default skin: you can change the default skin. Use the internal symbolic
## names, ie 'vector', 'monobook':
$wgDefaultSkin = "vector";

# Enabled skins.
# The following skins were automatically enabled:
require_once "$IP/skins/CologneBlue/CologneBlue.php";
require_once "$IP/skins/Modern/Modern.php";
require_once "$IP/skins/MonoBook/MonoBook.php";
require_once "$IP/skins/Vector/Vector.php";


# Enabled Extensions. Most extensions are enabled by including the base extension file here
# but check specific extension documentation for more details
# The following extensions were automatically enabled:
require_once "$IP/extensions/Cite/Cite.php";
require_once "$IP/extensions/ConfirmEdit/ConfirmEdit.php";
require_once "$IP/extensions/Gadgets/Gadgets.php";
require_once "$IP/extensions/ImageMap/ImageMap.php";
require_once "$IP/extensions/InputBox/InputBox.php";
require_once "$IP/extensions/Interwiki/Interwiki.php";
require_once "$IP/extensions/LocalisationUpdate/LocalisationUpdate.php";
require_once "$IP/extensions/Nuke/Nuke.php";
require_once "$IP/extensions/ParserFunctions/ParserFunctions.php";
require_once "$IP/extensions/Poem/Poem.php";
require_once "$IP/extensions/Renameuser/Renameuser.php";
require_once "$IP/extensions/SpamBlacklist/SpamBlacklist.php";
require_once "$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php";
require_once "$IP/extensions/TitleBlacklist/TitleBlacklist.php";
require_once "$IP/extensions/WikiEditor/WikiEditor.php";


# End of automatically generated settings.
# Add more configuration options below.
19 changes: 7 additions & 12 deletions targets/mediawiki/MediaWikiTarget.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
*/

final class MediaWikiTarget extends PerfTarget {

const MEDIAWIKI_VERSION = 'mediawiki-1.26.2';

public function __construct(private PerfOptions $options) {}

protected function getSanityCheckString(): string {
Expand All @@ -22,7 +25,7 @@ public function install(): void {
Utils::CopyDirContents($src_dir, $this->getSourceRoot());
} else {
Utils::ExtractTar(
__DIR__.'/mediawiki-1.24.0.tar.gz',
__DIR__.'/'.self::MEDIAWIKI_VERSION.'.tar.gz',
$this->options->tempDir,
);
}
Expand All @@ -37,18 +40,10 @@ public function install(): void {
$cache_dir = $this->getSourceRoot().'/mw-cache';
mkdir($cache_dir);

copy(__DIR__.'/LocalSettings.php', $this->getSourceRoot().'/LocalSettings.php')
file_put_contents(
$this->getSourceRoot().'/LocalSettings.php',
'$wgCacheDirectory="'.
$cache_dir.
'";'.
// Default behavior is to do a MySQL query *for each translatable string
// on every page view*. This is just insane.
'$wgLocalisationCacheConf["store"] = "file";'.
// Default behavior is to maintain view counts in MySQL. Any real
// large-scale deployment should be using a more scalable solution such
// as log files or Google Analytics
'$wgDisableCounters = true;',
'$wgCacheDirectory="'.$cache_dir.'";',
FILE_APPEND,
);
}
Expand All @@ -65,6 +60,6 @@ public function postInstall(): void {
}

public function getSourceRoot(): string {
return $this->options->tempDir.'/mediawiki';
return $this->options->tempDir.'/'.self::MEDIAWIKI_VERSION;
}
}
Binary file not shown.
Binary file modified targets/mediawiki/mw_bench.sql.gz
Binary file not shown.
99 changes: 0 additions & 99 deletions targets/mediawiki/patches/0001-LCStoreStaticArray.patch

This file was deleted.

0 comments on commit 4c4a90f

Please sign in to comment.