From c7fd922b5035f7380fb5ab33a223e7cf5bd5c4ee Mon Sep 17 00:00:00 2001 From: Daniel Lugo Date: Tue, 19 Oct 2021 15:45:21 -0400 Subject: [PATCH] Prevent unnecessary order re-processing --- services/gunDB/contact-api/jobs/onOrders.js | 30 +++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/services/gunDB/contact-api/jobs/onOrders.js b/services/gunDB/contact-api/jobs/onOrders.js index 4309b87a..b59a657b 100644 --- a/services/gunDB/contact-api/jobs/onOrders.js +++ b/services/gunDB/contact-api/jobs/onOrders.js @@ -94,6 +94,11 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => { return } + // Was recycled + if (order === null) { + return + } + if (!Schema.isOrder(order)) { logger.info( orderID, @@ -112,17 +117,25 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => { ordersProcessed.add(orderID) + if (Date.now() - order.timestamp > 66000) { + logger.info('Not processing old order', orderID) + return + } + + logger.info('processing order ', orderID) + const alreadyAnswered = await getUser() .get(Key.ORDER_TO_RESPONSE) .get(orderID) .then() - logger.info(orderID, 'alreadyAnswered', !!alreadyAnswered) - if (alreadyAnswered) { + logger.info(orderID, 'alreadyAnswered') return } + logger.info(orderID, ' was not answered, will now answer') + const senderEpub = await Utils.pubToEpub(order.from) const secret = await SEA.secret(senderEpub, getUser()._.sea) @@ -560,6 +573,14 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => { ) } }) + } finally { + // Recycle + require('../../Mediator') + .getGun() + .get('orderNodes') + .get(addr) + .get(orderID) + .put(null) } } @@ -583,6 +604,11 @@ const onOrders = (user, gun, SEA) => { return } + if (currentOrderAddr === addr) { + // Already subscribed + return + } + currentOrderAddr = addr logger.info(`listening to address: ${addr}`)