Non sono ancora sicuro di cosa stia causando la pausa, ma sembra che sia quello il colpevole.
Durante la pausa, Cursor.nextObject
viene chiamato più volte prima dei primi ritorni. Alcune di queste chiamate stanno restituendo null
. La soluzione è assicurarsi che Cursor.nextObject
non viene mai chiamato contemporaneamente.
if (this.cursor && !this.cursor_exec && this.length() < this.concurrency) {
this.cursor_exec = true;
this.cursor.nextObject(function(err, item) {
console.log(this.name + ': ' + (item ? item._id : null) + ' ' + (err ? err : null));
this.cursor_exec = false;
if (item) {
this.push(item);
} else {
delete this.cursor;
}
}.bind(this));
}