mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +01:00
refactor: closes #13547, process user uploads via batch
reduce processed user count to 100 per batch
This commit is contained in:
@@ -89,34 +89,36 @@ module.exports = {
|
||||
const keys = uids.map(uid => `uid:${uid}:uploads`);
|
||||
|
||||
const userUploadData = await db.getSortedSetsMembersWithScores(keys);
|
||||
const bulkAdd = [];
|
||||
const bulkRemove = [];
|
||||
const promises = [];
|
||||
|
||||
userUploadData.forEach((userUploads, idx) => {
|
||||
await Promise.all(userUploadData.map(async (allUserUploads, idx) => {
|
||||
const uid = uids[idx];
|
||||
if (Array.isArray(userUploads)) {
|
||||
userUploads.forEach((userUpload) => {
|
||||
const normalizedPath = normalizePath(userUpload.value);
|
||||
if (normalizedPath !== userUpload.value) {
|
||||
bulkAdd.push([`uid:${uid}:uploads`, userUpload.score, normalizedPath]);
|
||||
promises.push(db.setObjectField(`upload:${md5(normalizedPath)}`, 'uid', uid));
|
||||
if (Array.isArray(allUserUploads)) {
|
||||
await batch.processArray(allUserUploads, async (userUploads) => {
|
||||
const bulkAdd = [];
|
||||
const bulkRemove = [];
|
||||
const promises = [];
|
||||
userUploads.forEach((userUpload) => {
|
||||
const normalizedPath = normalizePath(userUpload.value);
|
||||
if (normalizedPath !== userUpload.value) {
|
||||
bulkAdd.push([`uid:${uid}:uploads`, userUpload.score, normalizedPath]);
|
||||
promises.push(db.setObjectField(`upload:${md5(normalizedPath)}`, 'uid', uid));
|
||||
|
||||
bulkRemove.push([`uid:${uid}:uploads`, userUpload.value]);
|
||||
promises.push(db.delete(`upload:${md5(userUpload.value)}`));
|
||||
}
|
||||
bulkRemove.push([`uid:${uid}:uploads`, userUpload.value]);
|
||||
promises.push(db.delete(`upload:${md5(userUpload.value)}`));
|
||||
}
|
||||
});
|
||||
await Promise.all(promises);
|
||||
await db.sortedSetRemoveBulk(bulkRemove);
|
||||
await db.sortedSetAddBulk(bulkAdd);
|
||||
}, {
|
||||
batch: 500,
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
await Promise.all(promises);
|
||||
await db.sortedSetRemoveBulk(bulkRemove);
|
||||
await db.sortedSetAddBulk(bulkAdd);
|
||||
}));
|
||||
|
||||
progress.incr(uids.length);
|
||||
}, {
|
||||
batch: 500,
|
||||
batch: 100,
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user