Skip to content

Commit 388850e

Browse files
committed
[core] Fixes for user merging job
1 parent 941d6dd commit 388850e

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

api/jobs/userMerge.js

+32-5
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,6 @@ var handleMerges = function(db, callback) {
9292
//update new user
9393

9494
db.collection('app_users' + app_id).update({_id: newAppUser._id}, {'$set': newAppUser}, function(err6) {
95-
if (callback && typeof callback === 'function') {
96-
callback(null, newAppUser);//we do not return error as merge is already registred. Doc merging will be retried in job.
97-
}
9895
//Dispatch to other plugins only after callback.
9996
if (!err6) {
10097
//update metric changes document
@@ -113,6 +110,9 @@ var handleMerges = function(db, callback) {
113110
}
114111
});
115112
}
113+
else {
114+
resolve();//will retry after
115+
}
116116
});
117117
});
118118
});
@@ -170,11 +170,38 @@ class UserMergeJob extends job.Job {
170170
* Run the job
171171
* @param {Db} db connection
172172
* @param {done} done callback
173+
* @param {function} progressJob - callback when progress made
173174
*/
174-
run(db, done) {
175+
run(db, done, progressJob) {
176+
var total = 0;
177+
var current = 0;
178+
var bookmark = "";
179+
180+
/**
181+
* check job status periodically
182+
*/
183+
function ping() {
184+
log.d('Pinging user merging job');
185+
if (timeout) {
186+
progressJob(total, current, bookmark);
187+
timeout = setTimeout(ping, 10000);
188+
}
189+
}
190+
/**
191+
* end job
192+
* @returns {varies} job done
193+
*/
194+
function endJob() {
195+
log.d('Ending user merging job');
196+
clearTimeout(timeout);
197+
timeout = 0;
198+
return done();
199+
}
200+
var timeout = setTimeout(ping, 10000);
201+
175202
log.d('finishing up not finished merges merges...');
176203
handleMerges(db, ()=>{
177-
done();
204+
endJob();
178205
});
179206
}
180207
}

0 commit comments

Comments
 (0)