Улучшение fillCheckQueue
This commit is contained in:
@@ -184,8 +184,8 @@ class BUCServer {
|
|||||||
log(LM_WARN, `clean 'buc' table: deleted ${res.deleted}`);
|
log(LM_WARN, `clean 'buc' table: deleted ${res.deleted}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
//rows = await db.select({table: 'buc', count: true});
|
rows = await db.select({table: 'buc', count: true});
|
||||||
//log(LM_WARN, `'buc' table length: ${rows[0].count}`);
|
log(LM_WARN, `'buc' table size: ${rows[0].count}`);
|
||||||
|
|
||||||
now = Date.now();
|
now = Date.now();
|
||||||
//выборка кандидатов
|
//выборка кандидатов
|
||||||
@@ -200,25 +200,31 @@ class BUCServer {
|
|||||||
`
|
`
|
||||||
});
|
});
|
||||||
|
|
||||||
//console.log(rows);
|
//формирование checkQueue
|
||||||
|
|
||||||
if (rows.length) {
|
if (rows.length) {
|
||||||
const ids = [];
|
const ids = [];
|
||||||
|
const rowsToPush = [];
|
||||||
|
|
||||||
|
//сначала выберем сколько надо
|
||||||
for (const row of rows) {
|
for (const row of rows) {
|
||||||
if (this.checkQueue.length >= this.maxCheckQueueLength)
|
if (this.checkQueue.length + rowsToPush.length >= this.maxCheckQueueLength)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
rowsToPush.push(row);
|
||||||
ids.push(row.id);
|
ids.push(row.id);
|
||||||
this.checkQueue.push(row);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//установим у них флаг "в обработке"
|
||||||
await db.update({
|
await db.update({
|
||||||
table: 'buc',
|
table: 'buc',
|
||||||
mod: `(r) => r.state = 1`,
|
mod: `(r) => r.state = 1`,
|
||||||
where: `@@id(${db.esc(ids)})`
|
where: `@@id(${db.esc(ids)})`
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//пушим в очередь, после этого их обработает periodicCheck
|
||||||
|
for (const row of rowsToPush)
|
||||||
|
this.checkQueue.push(row);
|
||||||
|
|
||||||
log(LM_WARN, `checkQueue: added ${ids.length} recs, total ${this.checkQueue.length}`);
|
log(LM_WARN, `checkQueue: added ${ids.length} recs, total ${this.checkQueue.length}`);
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user