Prevent unnecessary order re-processing

This commit is contained in:
Daniel Lugo 2021-10-19 15:45:21 -04:00
parent 6d83455712
commit c7fd922b50

View file

@ -94,6 +94,11 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => {
return return
} }
// Was recycled
if (order === null) {
return
}
if (!Schema.isOrder(order)) { if (!Schema.isOrder(order)) {
logger.info( logger.info(
orderID, orderID,
@ -112,17 +117,25 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => {
ordersProcessed.add(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() const alreadyAnswered = await getUser()
.get(Key.ORDER_TO_RESPONSE) .get(Key.ORDER_TO_RESPONSE)
.get(orderID) .get(orderID)
.then() .then()
logger.info(orderID, 'alreadyAnswered', !!alreadyAnswered)
if (alreadyAnswered) { if (alreadyAnswered) {
logger.info(orderID, 'alreadyAnswered')
return return
} }
logger.info(orderID, ' was not answered, will now answer')
const senderEpub = await Utils.pubToEpub(order.from) const senderEpub = await Utils.pubToEpub(order.from)
const secret = await SEA.secret(senderEpub, getUser()._.sea) 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 return
} }
if (currentOrderAddr === addr) {
// Already subscribed
return
}
currentOrderAddr = addr currentOrderAddr = addr
logger.info(`listening to address: ${addr}`) logger.info(`listening to address: ${addr}`)