From 8463ad66fe8a965321ab08388a4ec5002510bd2f Mon Sep 17 00:00:00 2001 From: rob Date: Sat, 5 Nov 2022 07:13:14 -0400 Subject: [PATCH] Core disconnect processing --- app/services/core-node.js | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/app/services/core-node.js b/app/services/core-node.js index 8f545d5..29bce6b 100644 --- a/app/services/core-node.js +++ b/app/services/core-node.js @@ -474,15 +474,23 @@ class CoreNodeService extends SiteService { // provides an abort point if any listener throws await this.emitDtpEvent('disconnect-pre', { core }); - const disconnect = await this.sendRequest(core, { - method: 'DELETE', - url: `/core/connect/node/${core.oauth.clientId}`, - }); - this.log.alert('Core disconnect request complete', { - name: core.meta.name, - domain: core.meta.domain, - disconnect, - }); + let disconnect; + try { + disconnect = await this.sendRequest(core, { + method: 'DELETE', + url: `/core/connect/node/${core.oauth.clientId}`, + }); + } catch (error) { + if ((error.code !== 'EPROTO') && (error.statusCode !== 404)) { + throw new SiteError(error.statusCode, 'Failed to disconnect from Core'); + } + } finally { + this.log.alert('Core disconnect request complete', { + name: core.meta.name, + domain: core.meta.domain, + disconnect, + }); + } try { await this.emitDtpEvent('disconnect-post', { core, disconnect }); @@ -496,8 +504,8 @@ class CoreNodeService extends SiteService { .cursor() .eachAsync(this.removeUser.bind(this, core), 1); - // await CoreNodeConnect.deleteMany({ 'site.domainKey': core.meta.domainKey }); - // await CoreNodeRequest.deleteMany({ core: core._id }); + await CoreNodeConnect.deleteMany({ 'site.domainKey': core.meta.domainKey }); + await CoreNodeRequest.deleteMany({ core: core._id }); try { await this.emitDtpEvent('disconnect', { core, disconnect }); @@ -506,6 +514,8 @@ class CoreNodeService extends SiteService { // keep going } + await CoreNode.deleteOne({ _id: core._id }); + return disconnect; }