Jdlrobson has uploaded a new change for review.
https://gerrit.wikimedia.org/r/323489
Change subject: Use Map for storing trending information
......................................................................
Use Map for storing trending information
It's better suited to this job.
Change-Id: I41f21fb26b96176b05eb196ef7632e4c3d72f1ed
---
M lib/processor.js
1 file changed, 21 insertions(+), 17 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/trending-edits
refs/changes/89/323489/1
diff --git a/lib/processor.js b/lib/processor.js
index 0ad7ef8..f0e11d9 100644
--- a/lib/processor.js
+++ b/lib/processor.js
@@ -1,7 +1,7 @@
"use strict";
// Capture the status of the wiki
-var pages = {};
+var pages = new Map();
var totalPages = 0;
/**
@@ -9,7 +9,7 @@
* @return {Array} of all pages that have been processed
*/
function getPages() {
- return Object.values(pages);
+ return Array.from(pages.values());
}
/**
@@ -19,7 +19,7 @@
* @param {Number} id
*/
function remove(id) {
- delete pages[id];
+ pages.delete(id);
totalPages--;
}
@@ -35,8 +35,7 @@
var time = now.getTime();
var maxAgeDate = new Date(time - options.max_age * 60000);
var maxInactivityDate = new Date(time - options.max_inactivity * 60000);
- Object.entries(pages).forEach((entry) => {
- var page = entry[1];
+ pages.forEach((page) => {
var speed = page.edits / ((now - page.from) / 1000 / 60);
if (page.updated < maxInactivityDate || page.from < maxAgeDate ||
speed < options.min_speed) {
remove(page.id);
@@ -56,7 +55,7 @@
* Reset all previous processing of edits
*/
function reset() {
- pages = {};
+ pages.clear();
totalPages = 0;
}
@@ -66,7 +65,7 @@
* @param {Object} edit
*/
function process(edit) {
- var contributors;
+ var contributors, page;
var id = edit.page_id;
var ts = new Date(edit.rev_timestamp);
var performer = edit.performer;
@@ -76,18 +75,21 @@
if (topic === 'mediawiki.page-delete') {
remove(id);
- } else if (topic === 'mediawiki.page-move' && pages[id]) {
- pages[id].title = edit.page_title;
+ } else if (topic === 'mediawiki.page-move' && pages.has(id)) {
+ page = pages.get(id);
+ page.title = edit.page_title;
// assumption here made that anons cannot move pages so we do not
touch anonEdits
- pages[id].edits -= 1;
+ page.edits -= 1;
+ pages.set(id,page);
} else if (topic === 'mediawiki.revision-create' && !edit.page_is_redirect
&&
!performer.user_is_bot && edit.page_namespace === 0) {
- if (pages[id]) {
- pages[id].edits++;
- pages[id].updated = ts;
+ if (pages.has(id)) {
+ page = pages.get(id);
+ page.edits++;
+ page.updated = ts;
} else {
totalPages++;
- pages[id] = {
+ page = {
id: id,
edits: 1,
from: ts,
@@ -102,9 +104,9 @@
title: edit.page_title
};
}
- contributors = pages[id].contributors;
+ contributors = page.contributors;
if (isAnon) {
- pages[id].anonEdits += 1;
+ page.anonEdits += 1;
if (!contributors.names[username]) {
contributors.anons++;
}
@@ -120,7 +122,9 @@
if (contributors.names[username].edits >
contributors.names[contributors.main].edits) {
contributors.main = username;
}
- pages[id].bias = contributors.names[contributors.main].edits /
pages[id].edits;
+ page.bias = contributors.names[contributors.main].edits / page.edits;
+ // update
+ pages.set(id,page);
}
}
--
To view, visit https://gerrit.wikimedia.org/r/323489
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I41f21fb26b96176b05eb196ef7632e4c3d72f1ed
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/trending-edits
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits