From f27ab20679e78acdc47d49db5ceb4695f05d7728 Mon Sep 17 00:00:00 2001 From: ale Date: Sat, 21 Sep 2024 03:07:51 +0200 Subject: [PATCH] try catch --- lib/fediblock.js | 86 +++++++++++++++++++++++++++++------------------- 1 file changed, 52 insertions(+), 34 deletions(-) diff --git a/lib/fediblock.js b/lib/fediblock.js index 16bcaad..091736f 100644 --- a/lib/fediblock.js +++ b/lib/fediblock.js @@ -68,17 +68,22 @@ module.exports = async (client, apex, app) => { requestPart(`https://${instance}/api/v1/instance/peers`) ]) if (instancelocated.length === 0) { - await client.index({ - index: constant.index, - body: { - instance, - api, - nodeinfo, - blocks, - peers, - last: new Date() - } - }) + try { + await client.index({ + index: constant.index, + body: { + instance, + api, + nodeinfo, + blocks, + peers, + last: new Date() + } + }) + } catch (e) { + console.error(e) + return + } app.locals.created++ return await util.sendFederatedMessage(constant.nick, 'New Fediblock Instance', `Fediblock Instance ${instance} with ${json.length} blocks - https://${constant.apexdomain}#${instance}`, getAccount(api)) } else { @@ -89,18 +94,23 @@ module.exports = async (client, apex, app) => { || !instancelocated[0]._source.api || !instancelocated[0]._source.nodeinfo || !instancelocated[0]._source.peers) { - await client.update({ - index: constant.index, - id: instancelocated[0]._id, - doc: { - api: api ? api : instancelocated[0]._source.api, - nodeinfo: nodeinfo ? nodeinfo : instancelocated[0]._source.nodeinfo, - blocks: blocks && blocks.length > 0 ? blocks : elasticinstance, - peers: peers && peers.length > 0 ? peers : instancelocated[0]._source.peers, - last: new Date() - }, - doc_as_upsert: true - }) + try { + await client.update({ + index: constant.index, + id: instancelocated[0]._id, + doc: { + api: api ? api : instancelocated[0]._source.api, + nodeinfo: nodeinfo ? nodeinfo : instancelocated[0]._source.nodeinfo, + blocks: blocks && blocks.length > 0 ? blocks : elasticinstance, + peers: peers && peers.length > 0 ? peers : instancelocated[0]._source.peers, + last: new Date() + }, + doc_as_upsert: true + }) + } catch (e) { + console.error(e) + return + } app.locals.updated++ if (instancelocated[0]._source.api && instancelocated[0]._source.api.uri && instancelocated[0]._source.api.contact_account && instancelocated[0]._source.api.contact_account.acct) { const difference = blocks.filter(block => block.domain && block.domain.trim().length > 0 && !elasticinstance.some(instance => block.domain === instance.domain)) @@ -127,18 +137,22 @@ module.exports = async (client, apex, app) => { return } }, - scanPart = async (instancesall, index) => { - for (const instance of instancesall) { - try { - app.locals.scan.emit('data', 'data: ' + (app.locals.scannum > 0 ? '(' + app.locals.scannum-- + ':' + (index + 1) + '): ' + instance : ': ' + instance) + '\n\n') - app.locals.peers++ - await scanInstance(instance) - } catch (e) { - console.error(e) + scanPart = async function* (instancesall, index) { + try { + for (const instance of instancesall) { + try { + app.locals.scan.emit('data', 'data: ' + (app.locals.scannum > 0 ? '(' + app.locals.scannum-- + ':' + (index + 1) + '): ' + instance : ': ' + instance) + '\n\n') + app.locals.peers++ + await scanInstance(instance) + } catch (e) { + console.error(e) + } } + yield 0 + } catch (e) { + console.error(e) + yield 1 } - global.gc() - return }, scanIndex = async (server, instancesall) => { try { @@ -241,7 +255,11 @@ module.exports = async (client, apex, app) => { const chunk = instancessorted.slice(i, i + chunkSize) parts.push(chunk) } - await Promise.all(parts.map(async (p, i) => await scanPart(p, i))) + await Promise.all(parts.map(async (p, i) => { + for await (const exit of scanPart(p, i)) { + console.log('Done: ' + server + ' - ' + i + ' parts with exit ' + exit + '.') + } + })) return await scanReturn() } else { return await scanReturn()