Mattflaschen has uploaded a new change for review. https://gerrit.wikimedia.org/r/262866
Change subject: Fix various ordering issues ...................................................................... Fix various ordering issues * Add a mechanism for certain wikis to run first in foreachwiki I was seeing an issue where cirrustestwiki ran before commonswiki on the initial update.php. It failed because it depended on a global table that commonswiki creates in its first update.php run. * Add a couple additional dependencies to control ordering. E.g. make sure all settings are in place before update.php is run. * Fix foreachwiki call for AntiSpoof (pre-existing issue shown by the foreachwiki error handling fix in parent commit) Change-Id: I719ae21c27de410cf477eeafb20c86e278e7525a --- M puppet/hieradata/common.yaml M puppet/manifests/site.pp A puppet/modules/mediawiki/files/multiwiki/priority-empty/README M puppet/modules/mediawiki/manifests/import/text.pp M puppet/modules/mediawiki/manifests/init.pp M puppet/modules/mediawiki/manifests/multiwiki.pp M puppet/modules/mediawiki/manifests/wiki.pp M puppet/modules/mediawiki/templates/docroot/w/dblist.php.erb M puppet/modules/role/manifests/antispoof.pp M puppet/modules/role/manifests/commons.pp 10 files changed, 55 insertions(+), 9 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant refs/changes/66/262866/1 diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml index af91aa7..c25e9b1 100644 --- a/puppet/hieradata/common.yaml +++ b/puppet/hieradata/common.yaml @@ -217,6 +217,7 @@ mediawiki::multiwiki::base_domain: '.wiki.local.wmftest.net' mediawiki::multiwiki::script_dir: "%{hiera('mediawiki::apache::docroot')}/w" +mediawiki::multiwiki::wiki_priority_dir: "%{hiera('mediawiki::settings_dir')}/priority" mediawiki::multiwiki::settings_root: "%{hiera('mediawiki::settings_dir')}/wikis" mediawiki::parsoid::dir: "%{hiera('mwv::services_dir')}/parsoid" diff --git a/puppet/manifests/site.pp b/puppet/manifests/site.pp index fe6ae67..e67bd18 100644 --- a/puppet/manifests/site.pp +++ b/puppet/manifests/site.pp @@ -16,7 +16,7 @@ # Human-readable constants which may be used in lieu of literal numbers # for specifying loading priority of resource types which support this -# notion (like mediawiki::extension and mediawiki::settings). +# notion (like mediawiki::extension, mediawiki::settings, and mediawiki::wiki). $LOAD_FIRST = 0 $LOAD_EARLY = 5 $LOAD_NORMAL = 10 diff --git a/puppet/modules/mediawiki/files/multiwiki/priority-empty/README b/puppet/modules/mediawiki/files/multiwiki/priority-empty/README new file mode 100644 index 0000000..14ab691 --- /dev/null +++ b/puppet/modules/mediawiki/files/multiwiki/priority-empty/README @@ -0,0 +1,4 @@ +This directory is managed by Puppet. + +The purpose is to control the ordering of the various wikis for scripts that +act on all of them. diff --git a/puppet/modules/mediawiki/manifests/import/text.pp b/puppet/modules/mediawiki/manifests/import/text.pp index 240949f..3583eb3 100644 --- a/puppet/modules/mediawiki/manifests/import/text.pp +++ b/puppet/modules/mediawiki/manifests/import/text.pp @@ -64,11 +64,13 @@ require => [ Mediawiki::Wiki[$wiki], Exec["${db_name}_copy_LocalSettings"], + Exec['update_all_databases'], ], } # Add extensions before importing text (bug T92036) MediaWiki::Extension <| |> -> Mediawiki::Import::Text <| |> + # Run sql before importing text Mysql::Sql <| |> -> Mediawiki::Import::Text <| |> } diff --git a/puppet/modules/mediawiki/manifests/init.pp b/puppet/modules/mediawiki/manifests/init.pp index 7501e8b..b7f2d95 100644 --- a/puppet/modules/mediawiki/manifests/init.pp +++ b/puppet/modules/mediawiki/manifests/init.pp @@ -190,6 +190,13 @@ refreshonly => true, } + # Make sure settings which will affect update_all_databases are + # in place before it runs. + Mediawiki::Settings <| |> -> Exec['update_all_databases'] + + # Make sure all wikis are defined before it runs. + Mediawiki::Wiki <| |> -> Exec['update_all_databases'] + php::composer::install { $dir: require => Git::Clone['mediawiki/core'], } diff --git a/puppet/modules/mediawiki/manifests/multiwiki.pp b/puppet/modules/mediawiki/manifests/multiwiki.pp index 1afcacd..d810fb1 100644 --- a/puppet/modules/mediawiki/manifests/multiwiki.pp +++ b/puppet/modules/mediawiki/manifests/multiwiki.pp @@ -16,12 +16,18 @@ # [*script_dir*] # Apache vhost document root. # +# [*wiki_priority_dir*] +# The directory used to control wiki priority. This is primarily +# intended for update_all_databases, but affects alldbs and all uses +# of foreachwiki +# # [*settings_root*] # Location of settings files. # class mediawiki::multiwiki( $base_domain, $script_dir, + $wiki_priority_dir, $settings_root, ) { @@ -151,6 +157,16 @@ target => "${::mediawiki::dir}/CREDITS", } + file { $wiki_priority_dir: + ensure => directory, + owner => $::share_owner, + group => $::share_group, + recurse => true, + purge => true, + force => true, + source => 'puppet:///modules/mediawiki/multiwiki/priority-empty', + } + file { '/usr/local/bin/multiversion-install': ensure => present, owner => 'root', diff --git a/puppet/modules/mediawiki/manifests/wiki.pp b/puppet/modules/mediawiki/manifests/wiki.pp index fbe17fb..f83d724 100644 --- a/puppet/modules/mediawiki/manifests/wiki.pp +++ b/puppet/modules/mediawiki/manifests/wiki.pp @@ -58,6 +58,12 @@ # [*server_url*] # Full base URL of host (example: 'http://mywiki.net:8080'). # +# [*primary_wiki*] +# Whether this is the primary wiki (defaults false) +# +# [*priority*] +# Position of this wiki in foreachwiki. Uses the scale of +# the LOAD_ constants from site.php. Default is $LOAD_NORMAL. define mediawiki::wiki( $wiki_name = $title, $db_name = "${title}wiki", @@ -71,6 +77,7 @@ $upload_path = "/${title}images", $server_url = "http://${title}${::mediawiki::multiwiki::base_domain}${::port_fragment}", $primary_wiki = false, + $priority = $::LOAD_NORMAL, ) { include ::mwv include ::mediawiki @@ -132,6 +139,13 @@ user => 'www-data', } + $priority_filename = sprintf('%s/%.2d-%s-dbConf.php', $::mediawiki::multiwiki::wiki_priority_dir, $priority, $db_name) + file { $priority_filename: + ensure => present, + mode => '0644', + content => template('mediawiki/wiki/dbConf.php.erb'), + } + File { owner => $::share_owner, group => $::share_group, @@ -148,12 +162,6 @@ ensure => present, mode => '0644', content => template('mediawiki/wiki/wgConf.php.erb'), - } - - file { "${settings_root}/dbConf.php": - ensure => present, - mode => '0644', - content => template('mediawiki/wiki/dbConf.php.erb'), } file { "/etc/logrotate.d/mediawiki_${db_name}_debug_log": diff --git a/puppet/modules/mediawiki/templates/docroot/w/dblist.php.erb b/puppet/modules/mediawiki/templates/docroot/w/dblist.php.erb index 2a3bed4..2f8bd6d 100644 --- a/puppet/modules/mediawiki/templates/docroot/w/dblist.php.erb +++ b/puppet/modules/mediawiki/templates/docroot/w/dblist.php.erb @@ -6,6 +6,6 @@ $wgLocalDatabases = array(); $wgCentralAuthAutoLoginWikis = array(); $wgMediawikiRoot = array(); -foreach ( glob( '<%= @settings_root %>/*/dbConf.php' ) as $file ) { +foreach ( glob( '<%= @wiki_priority_dir %>/*dbConf.php' ) as $file ) { require $file; } diff --git a/puppet/modules/role/manifests/antispoof.pp b/puppet/modules/role/manifests/antispoof.pp index d6d9fae..5da6bac 100644 --- a/puppet/modules/role/manifests/antispoof.pp +++ b/puppet/modules/role/manifests/antispoof.pp @@ -8,7 +8,7 @@ } exec { 'populate_spoofuser': - command => "/usr/local/bin/foreachwiki ${::mediawiki::dir}/extensions/AntiSpoof/maintenance/batchAntiSpoof.php", + command => "/usr/local/bin/foreachwiki extensions/AntiSpoof/maintenance/batchAntiSpoof.php", refreshonly => true, user => 'www-data', require => Mediawiki::Extension['AntiSpoof'], diff --git a/puppet/modules/role/manifests/commons.pp b/puppet/modules/role/manifests/commons.pp index 3c6b75a..507f020 100644 --- a/puppet/modules/role/manifests/commons.pp +++ b/puppet/modules/role/manifests/commons.pp @@ -14,6 +14,7 @@ mediawiki::wiki { 'commons': upload_dir => $upload_dir, + priority => $::LOAD_EARLY, } role::thumb_on_404::multiwiki { 'commons': } @@ -42,4 +43,11 @@ user => 'www-data', require => Mediawiki::Extension['GlobalUsage'], } + + # Make sure all Puppet settings are defined before running this + # maintenance script. + # + # TODO: Make a maintenance script resource so this is done + # for all maintenance scripts. + Mediawiki::Settings <| |> -> Exec['refresh globalusage table'] } -- To view, visit https://gerrit.wikimedia.org/r/262866 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I719ae21c27de410cf477eeafb20c86e278e7525a Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/vagrant Gerrit-Branch: master Gerrit-Owner: Mattflaschen <mflasc...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits