Krinkle has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/255042

Change subject: [WIP] Update refreshMessageBlobs.php to no longer use 
msg_resource table
......................................................................

[WIP] Update refreshMessageBlobs.php to no longer use msg_resource table

Requires Id8c26f41a82597e in MediaWiki core

Change-Id: Ifa74e8eabda2ab282851fad3a82a4e1e124d2b2e
---
M refreshMessageBlobs.php
1 file changed, 7 insertions(+), 66 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikimediaMaintenance 
refs/changes/42/255042/1

diff --git a/refreshMessageBlobs.php b/refreshMessageBlobs.php
index bb9d44c..2ceb434 100644
--- a/refreshMessageBlobs.php
+++ b/refreshMessageBlobs.php
@@ -1,75 +1,16 @@
 <?php
 
+require_once __DIR__ . '/WikimediaMaintenance.php';
+
 /**
- * Refresh the msg_resource table when cdb message files have been updated
+ * Invalidate MessageBlobStore cache keys
  */
-
-require_once( __DIR__ . '/WikimediaMaintenance.php' );
-
 class RefreshMessageBlobs extends WikimediaMaintenance {
-       function execute() {
-               global $IP;
-
-               # Get modification timesatmp for English (fallback) from the 
l10n cache
-               $enModTime = filemtime( "$IP/cache/l10n/l10n_cache-en.cdb" );
-               $langModTime = array( 'en' => $enModTime );
-
-               # To avoid cache stampede, fetch all the non-empty resource 
message
-               # blobs and update them one at a time manually. To avoid excess 
memory
-               # usage in LocalisationCache, order by language and clear the 
cache
-               # between each language.
-               $dbr = wfGetDB( DB_SLAVE );
-               $dbw = wfGetDB( DB_MASTER );
-               $res = $dbr->select( 'msg_resource',
-                       array( 'mr_resource', 'mr_lang', 'mr_blob', 
'mr_timestamp' ),
-                       "mr_blob != '{}'",
-                       __METHOD__,
-                       array( 'ORDER BY' => 'mr_lang' )
-               );
-               $prevLang = false;
-               foreach ( $res as $row ) {
-                       # Check modification time for this language
-                       if ( !isset( $langModTime[$row->mr_lang] ) ) {
-                               $file = 
"$IP/cache/l10n/l10n_cache-$row->mr_lang.cdb";
-                               if ( file_exists( $file ) ) {
-                                       $langModTime[$row->mr_lang] = 
filemtime( $file );
-                               } else {
-                                       $langModTime[$row->mr_lang] = 
$enModTime;
-                               }
-                       }
-                       if ( wfTimestamp( TS_UNIX, $row->mr_timestamp ) >= 
$langModTime[$row->mr_lang] ) {
-                               continue;
-                       }
-
-                       # Clear LocalisationCache of the old language to reduce 
memory usage
-                       if ( $prevLang !== false && $prevLang !== $row->mr_lang 
) {
-                               Language::getLocalisationCache()->unload( 
$prevLang );
-                       }
-                       $prevLang = $row->mr_lang;
-
-                       # Update message blob. Even though we read from a slave 
and are
-                       # writing to master, it should be safe because we're 
including
-                       # mr_timestamp in the WHERE clause.
-                       $messages = FormatJson::decode( $row->mr_blob, true );
-                       foreach ( $messages as $key => $value ) {
-                               $messages[$key] = wfMessage( $key 
)->inLanguage( $row->mr_lang )->plain();
-                       }
-                       $dbw->update( 'msg_resource',
-                               array(
-                                       'mr_blob' => FormatJson::encode( 
(object)$messages ),
-                                       'mr_timestamp' => $dbw->timestamp(),
-                               ),
-                               array(
-                                       'mr_resource' => $row->mr_resource,
-                                       'mr_lang' => $row->mr_lang,
-                                       'mr_timestamp' => $row->mr_timestamp,
-                               ),
-                               __METHOD__
-                       );
-                       wfWaitForSlaves();
-               }
+       public function execute() {
+               MessageBlobStore::clear();
+               wfWaitForSlaves();
        }
 }
 
 $maintClass = 'RefreshMessageBlobs';
-require_once( DO_MAINTENANCE );
+require_once DO_MAINTENANCE;

-- 
To view, visit https://gerrit.wikimedia.org/r/255042
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifa74e8eabda2ab282851fad3a82a4e1e124d2b2e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikimediaMaintenance
Gerrit-Branch: master
Gerrit-Owner: Krinkle <krinklem...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to