https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114910

Revision: 114910
Author:   bsitu
Date:     2012-04-14 15:29:50 +0000 (Sat, 14 Apr 2012)
Log Message:
-----------
followup to -r114905 - Cleanup index and make corresponding changes to the 
maintenance script

Modified Paths:
--------------
    trunk/extensions/PageTriage/PageTriage.php
    trunk/extensions/PageTriage/cron/updateUserMetadata.php
    trunk/extensions/PageTriage/sql/PageTriagePage.sql

Modified: trunk/extensions/PageTriage/PageTriage.php
===================================================================
--- trunk/extensions/PageTriage/PageTriage.php  2012-04-14 14:37:26 UTC (rev 
114909)
+++ trunk/extensions/PageTriage/PageTriage.php  2012-04-14 15:29:50 UTC (rev 
114910)
@@ -115,8 +115,6 @@
        $updater->addExtensionTable( 'pagetriage_page_tags', $base . 
'/PageTriagePageTags.sql' );
        $updater->addExtensionTable( 'pagetriage_page', $base . 
'/PageTriagePage.sql' );
        $updater->addExtensionTable( 'pagetriage_log', $base . 
'/PageTriageLog.sql' );
-       $updater->addExtensionUpdate( array( 'addField', 'pagetriage_page', 
'ptrp_tags_updated',
-               $base . '/PageTriageTimestamps.patch.sql', true ) );
        return true;
 }
 

Modified: trunk/extensions/PageTriage/cron/updateUserMetadata.php
===================================================================
--- trunk/extensions/PageTriage/cron/updateUserMetadata.php     2012-04-14 
14:37:26 UTC (rev 114909)
+++ trunk/extensions/PageTriage/cron/updateUserMetadata.php     2012-04-14 
15:29:50 UTC (rev 114910)
@@ -36,28 +36,37 @@
                $this->init();
                $this->output( "Started processing... \n" );
 
-               // Make the start time really old
-               $startTime = wfTimestamp( TS_UNIX ) - 60 * 60 * 24 * 365 * 10;
+               // Scan for data updated more than a day ago
+               $startTime = wfTimestamp( TS_UNIX ) - 60 * 60 * 24;
                $count = $this->batchSize;
-               $startId = 0;
 
+               $row = $this->dbr->selectRow(
+                       array( 'pagetriage_page' ),
+                       array( 'MAX(ptrp_page_id) AS max_id' ),
+                       array(),
+                       __METHOD__
+               );
+
+               // No data to process, exit
+               if ( $row === false ) {
+                       return;
+               }
+
+               $startId = $row->max_id + 1;
+
                while ( $count === $this->batchSize ) {
                        $count = 0;
                        $startTime = $this->dbr->addQuotes( 
$this->dbr->timestamp( $startTime ) );
 
-                       // Data should expire in a day, keep this inside loop 
so 
-                       // it's update to second
-                       $expiration = wfTimestamp( TS_UNIX ) - 60 * 60 * 24;
                        $res = $this->dbr->select(
                                array( 'pagetriage_page' ),
-                               array( 'ptrp_page_id', 'ptrp_created' ),
+                               array( 'ptrp_page_id', 'ptrp_tags_updated' ),
                                array(
-                                       '(ptrp_created > ' . $startTime . ') OR 
-                                       (ptrp_created = ' . $startTime . ' AND 
ptrp_page_id > ' . $startId . ')', 
-                                       'ptrp_tags_updated < ' . 
$this->dbr->addQuotes( $this->dbr->timestamp( $expiration ) )
+                                       '(ptrp_tags_updated < ' . $startTime . 
') OR 
+                                       (ptrp_tags_updated = ' . $startTime . ' 
AND ptrp_page_id < ' . $startId . ')'
                                ),
                                __METHOD__,
-                               array( 'LIMIT' => $this->batchSize, 'ORDER BY' 
=> 'ptrp_created, ptrp_page_id' )
+                               array( 'LIMIT' => $this->batchSize, 'ORDER BY' 
=> 'ptrp_tags_updated DESC, ptrp_page_id DESC' )
                        );
 
                        $pageId = array();
@@ -67,8 +76,10 @@
                        }
 
                        if ( $pageId ) {
-                               // update the startTime with the last row
-                               $startTime = wfTimestamp( TS_UNIX, 
$row->ptrp_created );
+                               // update the startTime with the last row if 
it's set, check in case it's not set
+                               if ( $row->ptrp_tags_updated ) {
+                                       $startTime = wfTimestamp( TS_UNIX, 
$row->ptrp_tags_updated );
+                               }
                                $startId = $row->ptrp_page_id;
 
                                $acp = ArticleCompileProcessor::newFromPageId( 
$pageId );

Modified: trunk/extensions/PageTriage/sql/PageTriagePage.sql
===================================================================
--- trunk/extensions/PageTriage/sql/PageTriagePage.sql  2012-04-14 14:37:26 UTC 
(rev 114909)
+++ trunk/extensions/PageTriage/sql/PageTriagePage.sql  2012-04-14 15:29:50 UTC 
(rev 114910)
@@ -3,9 +3,11 @@
        ptrp_page_id int unsigned NOT NULL PRIMARY KEY,
        ptrp_reviewed tinyint unsigned NOT NULL DEFAULT 0,
        ptrp_deleted tinyint unsigned NOT NULL DEFAULT 0,
-       ptrp_timestamp varbinary(14) NOT NULL
+       ptrp_created VARBINARY(14) NOT NULL,
+       ptrp_tags_updated VARBINARY(14) NOT NULL
 ) /*$wgDBTableOptions*/;
 
-CREATE INDEX /*i*/ptrp_reviewed_timestamp_page_id ON /*_*/pagetriage_page 
(ptrp_reviewed, ptrp_timestamp, ptrp_page_id, ptrp_deleted);
-CREATE INDEX /*i*/ptrp_timestamp_page_id ON /*_*/pagetriage_page 
(ptrp_timestamp, ptrp_page_id, ptrp_deleted);
-CREATE INDEX /*i*/ptrp_deleted_reviewed_etc ON /*_*/pagetriage_page 
(ptrp_deleted, ptrp_timestamp, ptrp_page_id, ptrp_reviewed);
+CREATE INDEX /*i*/ptrp_reviewed_created_page_del ON /*_*/pagetriage_page 
(ptrp_reviewed, ptrp_created, ptrp_page_id, ptrp_deleted);
+CREATE INDEX /*i*/ptrp_created_page_del ON /*_*/pagetriage_page (ptrp_created, 
ptrp_page_id, ptrp_deleted);
+CREATE INDEX /*i*/ptrp_del_created_page_reviewed ON /*_*/pagetriage_page 
(ptrp_deleted, ptrp_created, ptrp_page_id, ptrp_reviewed);
+CREATE INDEX /*i*/ptrp_updated_page_reviewed ON /*_*/pagetriage_page 
(ptrp_tags_updated, ptrp_page_id, ptrp_reviewed);


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to