mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: update note assertion topic members check to simpler posts.exists check
The original logic checked that each member of the resolved chain was part of the resolved topic. That isn't always the case, especially when topics splinter due to network timeouts/unavailability. This ended up causing issues where already asserted posts were re-asserted but failed because they no longer served an _activitypub object since it was already asserted and the data was just pulled from the db.
This commit is contained in:
@@ -117,9 +117,8 @@ Notes.assert = async (uid, input, options = { skipChecks: false }) => {
|
||||
await topics.tools.move(tid, { cid: options.cid, uid: 'system' });
|
||||
}
|
||||
|
||||
const members = await db.isSortedSetMembers(`tid:${tid}:posts`, chain.slice(1).map(p => p.pid));
|
||||
members.unshift(await posts.exists(mainPid));
|
||||
if (tid && members.every(Boolean)) {
|
||||
const exists = await posts.exists(chain.map(p => p.pid));
|
||||
if (tid && exists.every(Boolean)) {
|
||||
// All cached, return early.
|
||||
activitypub.helpers.log('[notes/assert] No new notes to process.');
|
||||
await unlock(id);
|
||||
@@ -212,7 +211,7 @@ Notes.assert = async (uid, input, options = { skipChecks: false }) => {
|
||||
}
|
||||
|
||||
return post;
|
||||
}).filter((p, idx) => !members[idx]);
|
||||
}).filter((p, idx) => !exists[idx]);
|
||||
const count = unprocessed.length;
|
||||
activitypub.helpers.log(`[notes/assert] ${count} new note(s) found.`);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user