From 76f75401ee3a168c2d3c8f455b17a16a5e07c1dd Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Tue, 14 Aug 2018 15:41:49 +0200 Subject: [PATCH] chore(xo-server/remotes): store handler instances --- packages/xo-server/src/xo-mixins/remotes.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/xo-server/src/xo-mixins/remotes.js b/packages/xo-server/src/xo-mixins/remotes.js index 53752bcc5..832fc1cf0 100644 --- a/packages/xo-server/src/xo-mixins/remotes.js +++ b/packages/xo-server/src/xo-mixins/remotes.js @@ -14,6 +14,7 @@ export default class { prefix: 'xo:remote', indexes: ['enabled'], }) + this._handlers = { __proto__: null } xo.on('clean', () => this._remotes.rebuildIndexes()) xo.on('start', async () => { @@ -32,10 +33,10 @@ export default class { }) }) xo.on('stop', async () => { - const remotes = await this.getAllRemotes() - for (const remote of remotes) { + const handlers = this._handlers + for (const id in handlers) { try { - ;(await this.getRemoteHandler(remote, true)).forget() + await handlers[id].forget() } catch (_) {} } }) @@ -50,7 +51,13 @@ export default class { throw new Error('remote is disabled') } - return getHandler(remote) + const { id } = remote + const handlers = this._handlers + let handler = handlers[id] + if (handler === undefined) { + handler = handlers[id] = getHandler(remote) + } + return handler } async testRemote (remote) {