Limit the parallelism of AP object processing (#4193)

This commit is contained in:
MeiMei
2019-02-09 13:01:21 +09:00
committed by syuilo
parent 1675c473d4
commit 757312ba52
2 changed files with 10 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
import * as mongo from 'mongodb';
import * as promiseLimit from 'promise-limit';
import { toUnicode } from 'punycode';
import config from '../../../config';
@@ -21,7 +22,7 @@ import { ITag, extractHashtags } from './tag';
import Following from '../../../models/following';
import { IIdentifier } from './identifier';
import { apLogger } from '../logger';
import { INote } from '../../../models/note';
const logger = apLogger;
/**
@@ -494,10 +495,11 @@ export async function updateFeatured(userId: mongo.ObjectID) {
if (!Array.isArray(items)) throw new Error(`Collection items is not an array`);
// Resolve and regist Notes
const limit = promiseLimit(2);
const featuredNotes = await Promise.all(items
.filter(item => item.type === 'Note')
.slice(0, 5)
.map(item => resolveNote(item, resolver)));
.map(item => limit(() => resolveNote(item, resolver)) as Promise<INote>));
await User.update({ _id: user._id }, {
$set: {