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