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

Reply via email to