Marcoil has uploaded a new change for review.

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


Change subject: Port the round-trip test server to MySQL. - Also ported 
importJson to mysql. - Commit results and stats correctly. - Don't use (for 
now) the new claimPage function, as it doesn't record the commits. - Pass 
connection parameters as command line options.
......................................................................

Port the round-trip test server to MySQL.
- Also ported importJson to mysql.
- Commit results and stats correctly.
- Don't use (for now) the new claimPage function, as it doesn't record the
commits.
- Pass connection parameters as command line options.

TODO:
- Improve performance, possibly using transactions.
- Record performance numbers (bug #46659).
- Remove debugging output.
Bug: 44652

Change-Id: I25ef1f909308676e311180c9cdfceca7f91118fb
---
M js/tests/server/importJson.js
M js/tests/server/package.json
M js/tests/server/server.js
3 files changed, 204 insertions(+), 152 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid 
refs/changes/91/73191/1

diff --git a/js/tests/server/importJson.js b/js/tests/server/importJson.js
index 7b1d8bc..7124f84 100755
--- a/js/tests/server/importJson.js
+++ b/js/tests/server/importJson.js
@@ -4,18 +4,63 @@
  * A utility for reading in a JSON-y list of articles to the database.
  */
 
-var sqlite = require( 'sqlite3' ),
-       optimist = require( 'optimist' ),
+var opts = require( 'optimist' )
+       .usage( 'Usage: ./importJson.js titles.example.json' )
+       .options( 'help', {
+                       description: 'Show this message',
+                       'boolean': true,
+                       'default': false
+       } )
+       .options( 'prefix', {
+                       description: 'Which wiki prefix to use; e.g. "en" for 
English wikipedia, "es" for Spanish, "mw" for mediawiki.org',
+                       'boolean': false,
+                       'default': 'en'
+       } )
+       .options( 'h', {
+               alias: 'host',
+               default: 'localhost',
+               describe: 'Hostname of the database server.'
+       } )
+       .options( 'P', {
+               alias: 'port',
+               default: 3306,
+               describe: 'Port number to use for connection.'
+       } )
+       .options( 'D', {
+               alias: 'database',
+               default: 'parsoid',
+               describe: 'Database to use.'
+       } )
+       .options( 'u', {
+               alias: 'user',
+               default: 'parsoid',
+               describe: 'User for login.'
+       } )
+       .options( 'p', {
+               alias: 'password',
+               default: 'parsoidpw',
+               describe: 'Password.'
+       } )
+       .demand( 1 )
+       .argv;
 
-       db = new sqlite.Database( 'pages.db' ),
+var mysql = require( 'mysql' );
+var db = mysql.createConnection({
+       host     : opts.host,
+       port     : opts.port,
+       database : opts.database,
+       user     : opts.user,
+       password : opts.password,
+       multipleStatements : true
+});
 
-       dbInsert = db.prepare( 'INSERT INTO pages ( title, prefix ) VALUES ( ?, 
? )' ),
+var waitingCount = 0.5;
 
-       waitingCount = 0.5;
+var dbInsert = 'INSERT IGNORE INTO pages ( title, prefix ) VALUES ( ?, ? )';
 
 var insertRecord = function( record, prefix ) {
        waitingCount++;
-       dbInsert.run( [ record, prefix ], function ( err ) {
+       db.query( dbInsert, [ record, prefix ], function ( err ) {
                if ( err ) {
                        console.error( err );
                } else {
@@ -31,13 +76,13 @@
 var loadJSON = function( json, options ) {
        var i, titles = require( json );
 
-       db.run( 'BEGIN TRANSACTION' );
+       db.query( 'START TRANSACTION;' );
 
        for ( i = 0; i < titles.length; i++ ) {
                insertRecord( titles[i], options.prefix || 'en' );
        }
 
-       db.run( 'COMMIT TRANSACTION' );
+       db.query( 'COMMIT;' );
 
        waitingCount -= 0.5;
        if ( waitingCount <= 0 ) {
@@ -45,20 +90,7 @@
        }
 };
 
-var opts = optimist.usage( 'Usage: ./importJson.js titles.example.json', {
-               'help': {
-                       description: 'Show this message',
-                       'boolean': true,
-                       'default': false
-               },
-               'prefix': {
-                       description: 'Which wiki prefix to use; e.g. "en" for 
English wikipedia, "es" for Spanish, "mw" for mediawiki.org',
-                       'boolean': false,
-                       'default': 'en'
-               }
-}).argv;
-
-db.serialize( function ( err ) {
+db.connect( function ( err ) {
        var filepath;
        if ( err ) {
                console.error( err );
@@ -68,5 +100,6 @@
                        filepath = './' + filepath;
                }
                loadJSON( filepath, opts );
+               db.end();
        }
 } );
diff --git a/js/tests/server/package.json b/js/tests/server/package.json
index 31cb10b..ae118aa 100644
--- a/js/tests/server/package.json
+++ b/js/tests/server/package.json
@@ -7,7 +7,7 @@
                "optimist": "0.x.x",
                "querystring": "0.x.x",
                "path": "0.x.x",
-               "sqlite3": "2.x.x",
+               "mysql": "2.x.x",
                "express": "2.5.x"
        },
        "main": "server.js"
diff --git a/js/tests/server/server.js b/js/tests/server/server.js
index cf3c2f7..fdd1bc2 100755
--- a/js/tests/server/server.js
+++ b/js/tests/server/server.js
@@ -2,27 +2,56 @@
 ( function () {
 "use strict";
 
-var mysql = require( 'mysql' );
-var db = mysql.createConnection({
-       host     : 'localhost',
-       database : 'parsoid',
-       user     : 'parsoid',
-       password : 'parsoidpw',
-       multipleStatements : true
-});
-
-db.connect();
-
 var http = require( 'http' ),
        express = require( 'express' ),
        dbStack = [], dbFlag = false,
-       argv = require( 'optimist' ).argv,
        // The maximum number of tries per article
        maxTries = 6,
        // The maximum number of fetch retries per article
        maxFetchRetries = 6,
        // "Random" estimate of how many pending pages we have in the db
        pendingPagesEstimate = 500;
+
+// Command line options
+var argv = require( 'optimist' )
+       .options( 'h', {
+               alias: 'host',
+               default: 'localhost',
+               describe: 'Hostname of the database server.'
+       } )
+       .options( 'P', {
+               alias: 'port',
+               default: 3306,
+               describe: 'Port number to use for connection.'
+       } )
+       .options( 'D', {
+               alias: 'database',
+               default: 'parsoid',
+               describe: 'Database to use.'
+       } )
+       .options( 'u', {
+               alias: 'user',
+               default: 'parsoid',
+               describe: 'User for login.'
+       } )
+       .options( 'p', {
+               alias: 'password',
+               default: 'parsoidpw',
+               describe: 'Password.'
+       } )
+       .argv;
+
+var mysql = require( 'mysql' );
+var db = mysql.createConnection({
+       host     : argv.host,
+       port     : argv.port,
+       database : argv.database,
+       user     : argv.user,
+       password : argv.password,
+       multipleStatements : true
+});
+
+db.connect();
 
 var counter = 0;
 
@@ -53,7 +82,7 @@
        '( claims.id IS NULL OR ' +
        '( claims.has_errorless_result = 0 AND claims.num_tries <= ? AND 
claims.timestamp < ? ) ) ' +
        'ORDER BY stats.score DESC, ' +
-       'claims.timestamp ASC, RANDOM() LIMIT 1';
+       'claims.timestamp ASC, RAND() LIMIT 1';
 
 var dbIncrementFetchErrorCount =
        'UPDATE pages SET num_fetch_errors = num_fetch_errors + 1 WHERE title = 
? AND prefix = ?';
@@ -62,7 +91,7 @@
        'UPDATE pages SET num_fetch_errors = 0 WHERE title = ? and prefix = ?';
 
 var dbInsertCommit =
-       'INSERT OR IGNORE INTO commits ( hash, timestamp ) ' +
+       'INSERT IGNORE INTO commits ( hash, timestamp ) ' +
        'VALUES ( ?, ? )';
 
 var dbFindClaimByPageId =
@@ -388,57 +417,56 @@
 
 var titleCallback = function( req, res, retry, commitHash, cutOffTimestamp, 
err, row ) {
        if ( err && !retry ) {
+               console.error( 'Error in titleCallback: ' + err.toString() );
                res.send( 'Error! ' + err.toString(), 500 );
-       } else if ( err === null && row ) {
-               db.serialize( function () {
-                       // SSS FIXME: what about error checks?
-                       dbInsertCommit.run( [ commitHash, decodeURIComponent( 
req.query.ctime ) ] );
-                       dbFindClaimByPageId.get( [ row[0].id, commitHash ], 
function ( err, claim ) {
-                               if (claim) {
-                                       // Ignoring possible duplicate 
processing
-                                       // Increment the # of tries, update 
timestamp
-                                       dbUpdateClaim.run([Date.now(), 
claim.id],
-                                               dbUpdateErrCB.bind(null, 
row[0].title, row[0].prefix, commitHash, "claim", null));
+       } else if ( err === null && row && row.length > 0 ) {
+               // SSS FIXME: what about error checks?
+               db.query( dbInsertCommit, [ commitHash, decodeURIComponent( 
req.query.ctime ) ] );
+               db.query( dbFindClaimByPageId, [ row[0].id, commitHash ], 
function ( err, claim ) {
+                       if ( claim && claim[0] ) {
+                               // Ignoring possible duplicate processing
+                               // Increment the # of tries, update timestamp
+                               db.query( dbUpdateClaim, [Date.now(), 
claim[0].id],
+                                       dbUpdateErrCB.bind(null, row[0].title, 
row[0].prefix, commitHash, "claim", null));
 
-                                       if (claim.num_tries >= maxTries) {
-                                               // Too many failures.  Insert 
an error stats entry and retry fetch
-                                               console.log( ' CRASHER?', 
row[0].prefix + ':' + row[0].title );
-                                               var stats = [0, 0, 1, 
statsScore(0,0,1), claim.page_id, commitHash];
-                                               dbInsertClaimStats.run( stats, 
function ( err ) {
-                                                       if (err) {
-                                                               // Try updating 
the stats instead of inserting if we got an error
-                                                               // Likely a sql 
constraint error
-                                                               
dbUpdateClaimStats.run(stats, function (err) {
-                                                                       
dbUpdateErrCB( row[0].title, row[0].prefix, commitHash, 'stats', null, err );
-                                                               });
-                                                       }
-                                               } );
-                                               fetchPage(commitHash, 
cutOffTimestamp, req, res);
-                                       } else {
+                               if (claim[0].num_tries >= maxTries) {
+                                       // Too many failures.  Insert an error 
stats entry and retry fetch
+                                       console.log( ' CRASHER?', row[0].prefix 
+ ':' + row[0].title );
+                                       var stats = [0, 0, 1, 
statsScore(0,0,1), claim[0].page_id, commitHash];
+                                       db.query( dbInsertClaimStats, stats, 
function ( err ) {
+                                               if (err) {
+                                                       // Try updating the 
stats instead of inserting if we got an error
+                                                       // Likely a sql 
constraint error
+                                                       db.query( 
dbUpdateClaimStats, stats, function (err) {
+                                                               dbUpdateErrCB( 
row[0].title, row[0].prefix, commitHash, 'stats', null, err );
+                                                       });
+                                               }
+                                       } );
+                                       fetchPage(commitHash, cutOffTimestamp, 
req, res);
+                               } else {
+                                       console.log( ' ->', row[0].prefix + ':' 
+ row[0].title );
+                                       res.send( { prefix: row[0].prefix, 
title: row[0].title } );
+                               }
+                       } else {
+                               // Claim doesn't exist
+                               db.query( dbInsertClaim, [ row[0].id, 
commitHash, Date.now() ], function(err) {
+                                       if (!err) {
                                                console.log( ' ->', 
row[0].prefix + ':' + row[0].title );
                                                res.send( { prefix: 
row[0].prefix, title: row[0].title } );
+                                       } else {
+                                               console.error(err);
+                                               console.error("Multiple clients 
trying to access the same title:", row[0].prefix + ':' + row[0].title );
+                                               // In the rare scenario that 
some other client snatched the
+                                               // title before us, get a new 
title (use the randomized ordering query)
+                                               db.query( dbGetTitleRandom, [ 
commitHash, maxFetchRetries, maxTries, cutOffTimestamp ],
+                                                       titleCallback.bind( 
null, req, res, false, commitHash, cutOffTimestamp ) );
                                        }
-                               } else {
-                                       // Claim doesn't exist
-                                       dbInsertClaim.run( [ row[0].id, 
commitHash, Date.now() ], function(err) {
-                                               if (!err) {
-                                                       console.log( ' ->', 
row[0].prefix + ':' + row[0].title );
-                                                       res.send( { prefix: 
row[0].prefix, title: row[0].title } );
-                                               } else {
-                                                       console.error(err);
-                                                       console.error("Multiple 
clients trying to access the same title:", row[0].prefix + ':' + row[0].title );
-                                                       // In the rare scenario 
that some other client snatched the
-                                                       // title before us, get 
a new title (use the randomized ordering query)
-                                                       dbGetTitleRandom.get( [ 
commitHash, maxFetchRetries, maxTries, cutOffTimestamp ],
-                                                               
titleCallback.bind( null, req, res, false, commitHash, cutOffTimestamp ) );
-                                               }
-                                       });
-                               }
-                       });
+                               });
+                       }
                });
        } else if ( retry ) {
                // Try again with the slow DB search method
-               dbGetTitleRandom.get( [ commitHash, maxFetchRetries, maxTries, 
cutOffTimestamp ],
+               db.query( dbGetTitleRandom, [ commitHash, maxFetchRetries, 
maxTries, cutOffTimestamp ],
                        titleCallback.bind( null, req, res, false, commitHash, 
cutOffTimestamp ) );
        } else {
                res.send( 'no available titles that fit those constraints', 404 
);
@@ -448,7 +476,7 @@
 var fetchPage = function( commitHash, cutOffTimestamp, req, res ) {
        // This query picks a random page among the first 
'pendingPagesEstimate' pages
        var rowOffset = Math.floor(Math.random() * pendingPagesEstimate);
-       dbGetTitle.get([ commitHash, maxFetchRetries, maxTries, 
cutOffTimestamp, rowOffset ],
+       db.query( dbGetTitle, [ commitHash, maxFetchRetries, maxTries, 
cutOffTimestamp, rowOffset ],
                titleCallback.bind( null, req, res, true, commitHash, 
cutOffTimestamp ) );
 };
 
@@ -515,9 +543,9 @@
        //
        // Hopefully, no page takes longer than 10 minutes to parse. :)
 
-       claimPage(req.query.commit, Date.now() - 600, req, res);
+       // claimPage(req.query.commit, Date.now() - 600, req, res);
 
-//     fetchPage(req.query.commit, Date.now() - 600, req, res);
+       fetchPage(req.query.commit, Date.now() - 600, req, res);
 };
 
 var statsScore = function(skipCount, failCount, errorCount) {
@@ -544,7 +572,7 @@
        //console.warn("got: " + JSON.stringify([title, commitHash, result, 
skipCount, failCount, errorCount]));
        if ( errorCount > 0 && result.match( 'DoesNotExist' ) ) {
                console.log( 'XX', prefix + ':' + title );
-               dbIncrementFetchErrorCount.run([title, prefix],
+               db.query( dbIncrementFetchErrorCount, [title, prefix],
                        dbUpdateErrCB.bind(null, title, prefix, commitHash, 
"page fetch error count", null));
 
                // NOTE: the last db update may not have completed yet
@@ -552,39 +580,37 @@
                res.send( '', 200 );
        } else {
                db.query( dbFindClaimByTitle, [ title, prefix, commitHash ], 
function ( err, claim ) {
-                       if (!err && claim) {
-                               db.serialize( function () {
-                                       dbClearFetchErrorCount.run([title, 
prefix],
-                                               dbUpdateErrCB.bind(null, title, 
prefix, commitHash, "page fetch error count", null));
+                       if ( !err && claim && claim.length > 0 ) {
+                               db.query( dbClearFetchErrorCount, [title, 
prefix],
+                                       dbUpdateErrCB.bind(null, title, prefix, 
commitHash, "page fetch error count", null));
 
-                                       // Insert/update result and stats 
depending on whether this was
-                                       // the first try or a subsequent retry 
-- prevents duplicates
-                                       dbInsertResult.run([claim.id, result],
-                                               dbUpdateErrCB.bind(null, title, 
prefix, commitHash, "result", null));
+                               // Insert/update result and stats depending on 
whether this was
+                               // the first try or a subsequent retry -- 
prevents duplicates
+                               db.query( dbInsertResult, [claim[0].id, result],
+                                       dbUpdateErrCB.bind(null, title, prefix, 
commitHash, "result", null));
 
-                                       var stats = [skipCount, failCount, 
errorCount, statsScore(skipCount,failCount,errorCount)];
-                                       
dbInsertClaimStats.run(stats.concat([claim.page_id, commitHash]), function ( 
err ) {
-                                               if ( err ) {
-                                                       dbUpdateErrCB( title, 
prefix, commitHash, 'stats', null, err );
-                                               } else {
-                                                       
dbUpdateLatestResult.run( commitHash, claim.page_id,
-                                                               
dbUpdateErrCB.bind(null, title, prefix, commitHash, 'latest result', null ) );
-                                               }
-                                       } );
+                               var stats = [skipCount, failCount, errorCount, 
statsScore(skipCount,failCount,errorCount)];
+                               db.query( dbInsertClaimStats, 
stats.concat([claim[0].page_id, commitHash]), function ( err ) {
+                                       if ( err ) {
+                                               dbUpdateErrCB( title, prefix, 
commitHash, 'stats', null, err );
+                                       } else {
+                                               db.query( dbUpdateLatestResult, 
[commitHash, claim[0].page_id],
+                                                       
dbUpdateErrCB.bind(null, title, prefix, commitHash, 'latest result', null ) );
+                                       }
+                               } );
 
-                                       // Mark the claim as having a result. 
Used to be
-                                       // error-free result, but now we are 
using it to track if
-                                       // we have a result already.
-                                       dbUpdateClaimResult.run([claim.id],
-                                               dbUpdateErrCB.bind(null, title, 
prefix, commitHash, "claim result", null));
+                               // Mark the claim as having a result. Used to be
+                               // error-free result, but now we are using it 
to track if
+                               // we have a result already.
+                               db.query( dbUpdateClaimResult, [claim[0].id],
+                                       dbUpdateErrCB.bind(null, title, prefix, 
commitHash, "claim result", null));
 
 
-                                       console.log( '<- ', prefix + ':' + 
title, ':', skipCount, failCount,
-                                                       errorCount, 
commitHash.substr(0,7) );
-                                       // NOTE: the last db update may not 
have completed yet
-                                       // For now, always sending HTTP 200 
back to client.
-                                       res.send( '', 200 );
-                               });
+                               console.log( '<- ', prefix + ':' + title, ':', 
skipCount, failCount,
+                                               errorCount, 
commitHash.substr(0,7) );
+                               // NOTE: the last db update may not have 
completed yet
+                               // For now, always sending HTTP 200 back to 
client.
+                               res.send( '', 200 );
                        } else {
                                var msg = "Did not find claim for title: " + 
prefix + ':' + title;
                                msg = err ? msg + "\n" + err.toString() : msg;
@@ -607,7 +633,7 @@
 };
 
 var statsWebInterface = function ( req, res ) {
-       var queryIt, prefix;
+       var query, queryParams, prefix;
 
        var displayRow = function( res, label, val ) {
                        // round numeric data, but ignore others
@@ -625,20 +651,16 @@
 
        // Switch the query object based on the prefix
        if ( prefix !== null ) {
-               queryIt = dbPerWikiStatsQuery.get.bind(
-                       dbPerWikiStatsQuery,
-                       [ -1, prefix, prefix, prefix, prefix,
-                               prefix, prefix, prefix, prefix ]
-               );
+               query = dbPerWikiStatsQuery;
+               queryParams = [ -1, prefix, prefix, prefix, prefix,
+                               prefix, prefix, prefix, prefix ];
        } else {
-               queryIt = dbStatsQuery.get.bind(
-                       dbStatsQuery,
-                       [ -1 ]
-               );
+               query = dbStatsQuery;
+               queryParams = [ -1 ];
        }
 
        // Fetch stats for commit
-       queryIt( function ( err, row ) {
+       db.query( query, queryParams, function ( err, row ) {
                if ( err || !row ) {
                        var msg = "Stats query returned nothing!";
                        msg = err ? msg + "\n" + err.toString() : msg;
@@ -716,7 +738,7 @@
        var page = ( req.params[0] || 0 ) - 0,
                offset = page * 40;
 
-       dbFailsQuery.all( [ offset ],
+       db.query( dbFailsQuery, [ offset ],
                function ( err, rows ) {
                        var i, row;
 
@@ -754,15 +776,15 @@
                                                res.write( 'red' );
                                        }
 
-                                       res.write( '"><a target="_blank" 
href="http://parsoid.wmflabs.org/_rt/' + row[0].prefix + '/' +
-                                               row[0].title + '">' +
-                                               row[0].prefix + ':' + 
row[0].title + '</a> | ' +
-                                               '<a target="_blank" 
href="http://localhost:8000/_rt/' + row[0].prefix + '/' + row[0].title +
+                                       res.write( '"><a target="_blank" 
href="http://parsoid.wmflabs.org/_rt/' + row.prefix + '/' +
+                                               row.title + '">' +
+                                               row.prefix + ':' + row.title + 
'</a> | ' +
+                                               '<a target="_blank" 
href="http://localhost:8000/_rt/' + row.prefix + '/' + row.title +
                                                '">@lh</a> | ' +
-                                               '<a target="_blank" 
href="/latestresult/' + row[0].prefix + '/' + row[0].title + '">latest 
result</a>' +
+                                               '<a target="_blank" 
href="/latestresult/' + row.prefix + '/' + row.title + '">latest result</a>' +
                                                '</td>' );
-                                       res.write( '<td>' + makeCommitLink( 
row[0].hash, row[0].title, row[0].prefix ) + '</td>' );
-                                       res.write( '<td>' + row[0].skips + 
'</td><td>' + row[0].fails + '</td><td>' + ( row[0].errors === null ? 0 : 
row[0].errors ) + '</td></tr>' );
+                                       res.write( '<td>' + makeCommitLink( 
row.hash, row.title, row.prefix ) + '</td>' );
+                                       res.write( '<td>' + row.skips + 
'</td><td>' + row.fails + '</td><td>' + ( row.errors === null ? 0 : row.errors 
) + '</td></tr>' );
                                }
                                res.end( '</table></body></html>' );
                        }
@@ -771,21 +793,18 @@
 };
 
 var resultsWebInterface = function ( req, res ) {
-       var queryIt,
+       var query, queryParams,
                prefix = req.params[1] || null;
 
        if ( prefix !== null ) {
-               queryIt = dbResultsPerWikiQuery.all.bind(
-                       dbResultsPerWikiQuery,
-                       [ prefix ]
-               );
+               query = dbResultsPerWikiQuery;
+               queryParams = [ prefix ];
        } else {
-               queryIt = dbResultsQuery.all.bind(
-                       dbResultsQuery
-               );
+               query = dbResultsQuery;
+               queryParams = [];
        }
 
-       queryIt( function ( err, rows ) {
+       db.query( query, queryParams, function ( err, rows ) {
                var i;
                if ( err ) {
                        console.error( err );
@@ -828,14 +847,14 @@
        var prefix = commit === null ? req.params[0] : req.params[1];
 
        if ( commit !== null ) {
-               dbGetResultWithCommit.get( commit, title, prefix, 
resultWebCallback.bind( null, req, res ) );
+               db.query( dbGetResultWithCommit, [ commit, title, prefix ], 
resultWebCallback.bind( null, req, res ) );
        } else {
-               dbGetOneResult.get( title, prefix, resultWebCallback.bind( 
null, req, res ) );
+               db.query( dbGetOneResult, [ title, prefix ], 
resultWebCallback.bind( null, req, res ) );
        }
 };
 
 var GET_failedFetches = function( req, res ) {
-       dbFailedFetches.all( [maxFetchRetries], function ( err, rows ) {
+       db.query( dbFailedFetches, [maxFetchRetries], function ( err, rows ) {
                if ( err ) {
                        console.error( err );
                        res.send( err.toString(), 500 );
@@ -865,7 +884,7 @@
 };
 
 var GET_failsDistr = function( req, res ) {
-       dbFailsDistribution.all([-1], function ( err, rows ) {
+       db.query( dbFailsDistribution, [-1], function ( err, rows ) {
                if ( err ) {
                        console.error( err );
                        res.send( err.toString(), 500 );
@@ -887,7 +906,7 @@
 };
 
 var GET_skipsDistr = function( req, res ) {
-       dbSkipsDistribution.all([-1], function ( err, rows ) {
+       db.query( dbSkipsDistribution, [-1], function ( err, rows ) {
                if ( err ) {
                        console.error( err );
                        res.send( err.toString(), 500 );
@@ -974,7 +993,7 @@
                urlPrefix = "/regressions/between/" + r1 + "/" + r2;
                page = (req.params[2] || 0) - 0;
                offset = page * 40;
-               dbNumRegressionsBetweenRevs.get([r2,r1], function(err, row) {
+               db.query( dbNumRegressionsBetweenRevs, [ r2, r1 ], 
function(err, row) {
                        if (err || !row) {
                                res.send( err.toString(), 500 );
                        } else {
@@ -982,7 +1001,7 @@
                                        header = "Total regressions between 
selected revisions: " +
                                                        row[0].numRegressions +
                                                        ' | <a href="' + 
topfixesLink + '">topfixes</a>';
-                               dbRegressionsBetweenRevs.all([r2, r1, offset ],
+                               db.query( dbRegressionsBetweenRevs, [ r2, r1, 
offset ],
                                        displayPageList.bind(null, res, 
urlPrefix, page, header));
                        }
                });
@@ -990,7 +1009,7 @@
                urlPrefix = "/regressions";
                page = ( req.params[0] || 0 ) - 0;
                offset = page * 40;
-               dbRegressedPages.all([ offset ], displayPageList.bind(null, 
res, urlPrefix, page, null));
+               db.query( dbRegressedPages, [ offset ], 
displayPageList.bind(null, res, urlPrefix, page, null));
        }
 };
 
@@ -1002,14 +1021,14 @@
                urlPrefix = "/topfixes/between/" + r1 + "/" + r2;
                page = (req.params[2] || 0) - 0;
                offset = page * 40;
-               dbNumFixesBetweenRevs.get([r2,r1], function(err, row) {
+               db.query( dbNumFixesBetweenRevs, [ r2, r1 ], function(err, row) 
{
                        if (err || !row) {
                                res.send( err.toString(), 500 );
                        } else {
                                var regressionLink = "/regressions/between/" + 
r1 + "/" + r2,
                                        header = "Total fixes between selected 
revisions: " + row[0].numFixes +
                                                ' | <a href="' + regressionLink 
+ '">regressions</a>';
-                               dbFixesBetweenRevs.all([r2, r1, offset ],
+                               db.query( dbFixesBetweenRevs, [ r2, r1, offset 
],
                                        displayPageList.bind(null, res, 
urlPrefix, page, header));
                        }
                });
@@ -1017,12 +1036,12 @@
                urlPrefix = "/topfixes";
                page = ( req.params[0] || 0 ) - 0;
                offset = page * 40;
-               dbFixedPages.all([ offset ], displayPageList.bind(null, res, 
urlPrefix, page, null));
+               db.query( dbFixedPages, [ offset ], displayPageList.bind(null, 
res, urlPrefix, page, null));
        }
 };
 
 var GET_commits = function( req, res ) {
-       dbCommits.all([-1], function ( err, rows ) {
+       db.query( dbCommits, [-1], function ( err, rows ) {
                if ( err ) {
                        console.error( err );
                        res.send( err.toString(), 500 );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I25ef1f909308676e311180c9cdfceca7f91118fb
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: rt_testing
Gerrit-Owner: Marcoil <[email protected]>

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

Reply via email to