mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +01:00
fix: handle retry queue invalidation across a cluster
This commit is contained in:
@@ -12,6 +12,7 @@ const utils = require('../utils');
|
||||
const ttl = require('../cache/ttl');
|
||||
const lru = require('../cache/lru');
|
||||
const batch = require('../batch');
|
||||
const pubsub = require('../pubsub');
|
||||
|
||||
const requestCache = ttl({ ttl: 1000 * 60 * 5 }); // 5 minutes
|
||||
const ActivityPub = module.exports;
|
||||
@@ -256,6 +257,13 @@ ActivityPub.get = async (type, id, uri) => {
|
||||
|
||||
ActivityPub.retryQueue = lru({ name: 'activitypub-retry-queue', max: 4000, ttl: 1000 * 60 * 60 * 24 * 60 });
|
||||
|
||||
// handle clearing retry queue from another member of the cluster
|
||||
pubsub.on(`activitypub-retry-queue:lruCache:del`, (keys) => {
|
||||
if (Array.isArray(keys)) {
|
||||
keys.forEach(key => clearTimeout(ActivityPub.retryQueue.get(key)));
|
||||
}
|
||||
});
|
||||
|
||||
async function sendMessage(uri, id, type, payload, attempts = 1) {
|
||||
const keyData = await ActivityPub.getPrivateKey(type, id);
|
||||
const headers = await ActivityPub.sign(keyData, uri, payload);
|
||||
|
||||
Reference in New Issue
Block a user