From 7ac5446a13fe96beea9092ee77e116b97c506636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 21 Jan 2026 18:39:45 -0500 Subject: [PATCH] refactor: use local cache for plugin isActive check --- src/plugins/install.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/plugins/install.js b/src/plugins/install.js index b79831982f..14f410555f 100644 --- a/src/plugins/install.js +++ b/src/plugins/install.js @@ -14,6 +14,7 @@ const meta = require('../meta'); const pubsub = require('../pubsub'); const { paths, pluginNamePattern } = require('../constants'); const pkgInstall = require('../cli/package-install'); +const cache = require('../cache'); const packageManager = pkgInstall.getPackageManager(); let packageManagerExecutable = packageManager; @@ -70,6 +71,7 @@ module.exports = function (Plugins) { const count = await db.sortedSetCard('plugins:active'); await db.sortedSetAdd('plugins:active', count, id); } + cache.set(`plugin:isActive:${id}`, !isActive); meta.reloadRequired = true; const hook = isActive ? 'deactivate' : 'activate'; Plugins.hooks.fire(`action:plugin.${hook}`, { id: id }); @@ -170,16 +172,20 @@ module.exports = function (Plugins) { if (nconf.get('plugins:active')) { return nconf.get('plugins:active').includes(id); } - return await db.isSortedSetMember('plugins:active', id); + const cached = cache.get(`plugin:isActive:${id}`); + if (cached !== undefined) { + return cached; + } + const isActive = await db.isSortedSetMember('plugins:active', id); + cache.set(`plugin:isActive:${id}`, isActive); + return isActive; }; Plugins.getActive = async function () { if (nconf.get('plugins:active')) { return nconf.get('plugins:active'); } - const active = await db.getSortedSetRange('plugins:active', 0, -1); - nconf.set('plugins:active', active); - return active; + return await db.getSortedSetRange('plugins:active', 0, -1); }; Plugins.autocomplete = async (fragment) => {