From 6857443c8d80ae3d3c6dbb4e6f5ad54509cbecfd Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Sat, 4 Sep 2021 14:28:26 -0400 Subject: [PATCH 1/3] Simpler timeout mechanis in sendSpontPayment.. --- services/gunDB/contact-api/actions.js | 77 ++++++++++++++------------- 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/services/gunDB/contact-api/actions.js b/services/gunDB/contact-api/actions.js index 760c03b5..3e0f58a9 100644 --- a/services/gunDB/contact-api/actions.js +++ b/services/gunDB/contact-api/actions.js @@ -389,22 +389,23 @@ const sendSpontaneousPayment = async ( logger.info('ORDER ID') logger.info(orderID) /** @type {import('shock-common').Schema.OrderResponse} */ - const encryptedOrderRes = await Utils.tryAndWait( - gun => - new Promise(res => { - gun - .user(to) - .get(Key.ORDER_TO_RESPONSE) - .get(orderID) - .on(orderResponse => { - logger.info(orderResponse) - if (Schema.isOrderResponse(orderResponse)) { - res(orderResponse) - } - }) - }), - v => Schema.isOrderResponse(v) - ) + const encryptedOrderRes = await Common.makePromise((res, rej) => { + setTimeout(() => { + rej(new Error('Timeout of 20s passed when awaiting order response.')) + }, 20000) + + require('../Mediator') + .getGun() + .user(to) + .get(Key.ORDER_TO_RESPONSE) + .get(orderID) + .on(orderResponse => { + logger.info(orderResponse) + if (Schema.isOrderResponse(orderResponse)) { + res(orderResponse) + } + }) + }) if (!Schema.isOrderResponse(encryptedOrderRes)) { const e = TypeError( @@ -479,27 +480,31 @@ const sendSpontaneousPayment = async ( logger.info('ACK NODE') logger.info(orderResponse.ackNode) /** @type {import('shock-common').Schema.OrderResponse} */ - const encryptedOrderAckRes = await Utils.tryAndWait( - gun => - new Promise(res => { - gun - .user(to) - .get(Key.ORDER_TO_RESPONSE) - .get(orderResponse.ackNode) - .on(orderResponse => { - logger.info(orderResponse) - logger.info(Schema.isOrderResponse(orderResponse)) + const encryptedOrderAckRes = await Common.makePromise((res, rej) => { + setTimeout(() => { + rej( + new Error( + "Timeout of 20s exceeded when waiting for order response's ack." + ) + ) + }, 20000) - //@ts-expect-error - if (orderResponse && orderResponse.type === 'orderAck') { - //@ts-expect-error - res(orderResponse) - } - }) - }), - //@ts-expect-error - v => !v || !v.type - ) + require('../Mediator') + .getGun() + .user(to) + .get(Key.ORDER_TO_RESPONSE) + .get(orderResponse.ackNode) + .on(orderResponse => { + logger.info(orderResponse) + logger.info(Schema.isOrderResponse(orderResponse)) + + //@ts-expect-error + if (orderResponse && orderResponse.type === 'orderAck') { + //@ts-expect-error + res(orderResponse) + } + }) + }) if (!encryptedOrderAckRes || !encryptedOrderAckRes.type) { const e = TypeError( From 2b72dc69483f031a4138895c408fa1790cf6c63b Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Sat, 4 Sep 2021 15:00:49 -0400 Subject: [PATCH 2/3] Better log in pubToEpub() --- services/gunDB/contact-api/utils/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/gunDB/contact-api/utils/index.js b/services/gunDB/contact-api/utils/index.js index f599afcc..bd4cd452 100644 --- a/services/gunDB/contact-api/utils/index.js +++ b/services/gunDB/contact-api/utils/index.js @@ -188,7 +188,9 @@ const pubToEpub = async pub => { return epubOrTimeout } catch (err) { - logger.error(`Error inside pubToEpub:`) + logger.error( + `Error inside pubToEpub for pub ${pub.slice(0, 8)}...${pub.slice(-8)}:` + ) logger.error(err) throw err } From 9f5e49b64e3f5b5546b4d55bdaa38c99f90020a0 Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Sat, 4 Sep 2021 15:03:19 -0400 Subject: [PATCH 3/3] Longer timeouts --- services/gunDB/contact-api/actions.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/gunDB/contact-api/actions.js b/services/gunDB/contact-api/actions.js index 3e0f58a9..f8800962 100644 --- a/services/gunDB/contact-api/actions.js +++ b/services/gunDB/contact-api/actions.js @@ -391,8 +391,8 @@ const sendSpontaneousPayment = async ( /** @type {import('shock-common').Schema.OrderResponse} */ const encryptedOrderRes = await Common.makePromise((res, rej) => { setTimeout(() => { - rej(new Error('Timeout of 20s passed when awaiting order response.')) - }, 20000) + rej(new Error('Timeout of 30s passed when awaiting order response.')) + }, 30000) require('../Mediator') .getGun() @@ -484,10 +484,10 @@ const sendSpontaneousPayment = async ( setTimeout(() => { rej( new Error( - "Timeout of 20s exceeded when waiting for order response's ack." + "Timeout of 30s exceeded when waiting for order response's ack." ) ) - }, 20000) + }, 30000) require('../Mediator') .getGun()