Adding maintenance script to purge stale flagged revs entries from memcached (for...
authorRyan Lane <laner@users.mediawiki.org>
Sun, 26 Dec 2010 19:45:01 +0000 (19:45 +0000)
committerRyan Lane <laner@users.mediawiki.org>
Sun, 26 Dec 2010 19:45:01 +0000 (19:45 +0000)
maintenance/purgeStaleMemcachedFlaggedRevs.php [new file with mode: 0644]

diff --git a/maintenance/purgeStaleMemcachedFlaggedRevs.php b/maintenance/purgeStaleMemcachedFlaggedRevs.php
new file mode 100644 (file)
index 0000000..679c1fb
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+require_once( dirname( __FILE__ ) . '/commandLine.inc' );
+
+function purgeStaleMemcachedText() {
+       global $wgMemc, $wgDBname;
+       $db = wfGetDB( DB_MASTER );
+       $maxTextId = $db->selectField( 'text', 'max(old_id)' );
+       $latestReplicatedTextId = $db->selectField( array( 'recentchanges', 'revision' ), 'rev_text_id', 
+               array( 'rev_id = rc_this_oldid', "rc_timestamp < '20101225183000'"),  'purgeStaleMemcachedText', 
+               array( 'ORDER BY' => 'rc_timestamp DESC' ) );
+       $latestReplicatedTextId -= 100; # A bit of paranoia
+
+       echo "Going to purge text entries from $latestReplicatedTextId to $maxTextId in $wgDBname\n";
+
+       for ( $i = $latestReplicatedTextId; $i < $maxTextId; $i++ ) {
+               $keys = array();
+               $keys[] = wfMemcKey( 'flaggedrevs', 'countPending', $i );
+               $keys[] = wfMemcKey( 'flaggedrevs', 'includesSynced', $i );
+               $keys[] = wfMemcKey( 'flaggedrevs', 'overrideRedirect', $i );
+               $keys[] = wfMemcKey( 'unreviewedPages', 'underReview', $i );
+
+               foreach ( $keys as $key ) {
+                       while (1) {
+                               if (! $wgMemc->delete( $key ) ) {
+                                       echo "Memcache delete for $key returned false\n";
+                               }
+                               if ( $wgMemc->get( $key ) ) {
+                                       echo "There's still content in $key!\n";
+                               } else {
+                                       break;
+                               }
+                       }
+               }
+       }
+}
+
+purgeStaleMemcachedText();
+