/**
* Teardowns task queues for backward compatibility with rate limiting.
* This function is designed to gracefully shut down task queues, ensuring
* that existing tasks are handled and future tasks are not processed
* after a specified point.
*
* @param {Object} taskQueues - An object containing the task queues to be shut down.
* Expected to have a structure where keys are queue names
* and values are functions that manage the queue.
*/
function teardownTaskQueues(taskQueues) {
if (!taskQueues) {
console.warn("teardownTaskQueues: taskQueues is null or undefined. No queues to teardown.");
return;
}
for (const queueName in taskQueues) {
if (taskQueues.hasOwnProperty(queueName)) {
const queue = taskQueues[queueName];
if (typeof queue.stop === 'function') {
queue.stop(); // Stop processing new tasks
console.log(`teardownTaskQueues: Stopped queue ${queueName}`);
} else {
console.warn(`teardownTaskQueues: Queue ${queueName} does not have a 'stop' method. Cannot stop processing.`);
}
if (typeof queue.clear === 'function') {
queue.clear(); // Clear any remaining tasks in the queue
console.log(`teardownTaskQueues: Cleared queue ${queueName}`);
} else {
console.warn(`teardownTaskQueues: Queue ${queueName} does not have a 'clear' method. Cannot clear tasks.`);
}
}
}
}
Add your comment