[MediaWiki-commits] [Gerrit] mediawiki...trending-edits[master]: Use Map for storing trending information

2016-12-05 Thread Ppchelko (Code Review)
Ppchelko has submitted this change and it was merged.

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, 25 insertions(+), 25 deletions(-)

Approvals:
  Ppchelko: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/processor.js b/lib/processor.js
index 8c7edab..a11e99f 100644
--- a/lib/processor.js
+++ b/lib/processor.js
@@ -1,15 +1,14 @@
 "use strict";
 
 // Capture the status of the wiki
-var pages = {};
-var totalPages = 0;
+var pages = new Map();
 
 /**
  * Return unsorted array of objects representing edit activity on pages
  * @return {Array} of all pages that have been processed
  */
 function getPages() {
-return Object.values(pages);
+return Array.from(pages.values());
 }
 
 /**
@@ -19,10 +18,7 @@
  * @param {Number} id
  */
 function remove(id) {
-if (pages[id]) {
-delete pages[id];
-totalPages--;
-}
+pages.delete(id);
 }
 
 /**
@@ -37,19 +33,20 @@
 var time = date.getTime();
 var maxAgeDate = new Date(time - options.max_age * 6);
 var maxInactivityDate = new Date(time - options.max_inactivity * 6);
-Object.entries(pages).forEach((entry) => {
-var page = entry[1];
+pages.forEach((page) => {
 var timePassed = (date - page.from) / 6;
 var speed = timePassed > 0 ? page.edits / timePassed : page.edits;
 if (page.updated < maxInactivityDate || page.from < maxAgeDate || 
speed < options.min_speed) {
 remove(page.id);
 }
 });
+
+var size = pages.size;
 // Only do this if we have to
-if (totalPages > options.max_pages) {
+if (size > options.max_pages) {
 getPages().sort(function(a, b) {
 return a.from < b.from ? -1 : 1;
-}).slice(0, totalPages - options.max_pages).forEach(function(page) {
+}).slice(0, size - options.max_pages).forEach(function(page) {
 remove(page.id);
 });
 }
@@ -59,8 +56,7 @@
  * Reset all previous processing of edits
  */
 function reset() {
-pages = {};
-totalPages = 0;
+pages.clear();
 }
 
 /**
@@ -70,6 +66,7 @@
  */
 function process(edit) {
 var contributors;
+var page;
 var id = edit.page_id;
 var ts = new Date(edit.rev_timestamp);
 var performer = edit.performer;
@@ -79,18 +76,19 @@
 
 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;
 } 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,
 isNew: edit.rev_parent_id === undefined,
 edits: 1,
@@ -107,9 +105,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++;
 }
@@ -125,8 +123,10 @@
 if (contributors.names[username].edits > 
contributors.names[contributors.main].edits) {
 contributors.main = username;
 }
-pages[id].bytes = edit.rev_len - pages[id].rev_len;
-pages[id].bias = contributors.names[contributors.main].edits / 
pages[id].edits;
+page.bytes = edit.rev_len - page.rev_len;
+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: merged
Gerrit-Change-Id: I41f21fb26b96176b05eb196ef7632e4c3d72f1ed
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/services/trending-edits
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson 
Gerrit-Reviewer: Jdlrobson 
Gerrit-Reviewer: Mobrovac 
Gerrit-Reviewer: Pmiazga 
Gerrit-Reviewer: Ppchelko 

[MediaWiki-commits] [Gerrit] mediawiki...trending-edits[master]: Use Map for storing trending information

2016-11-24 Thread Jdlrobson (Code Review)
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 * 6);
 var maxInactivityDate = new Date(time - options.max_inactivity * 6);
-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 

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits