From 171b1f0b770b25fc62b4493b62ca152fd6536522 Mon Sep 17 00:00:00 2001 From: emad-salah Date: Tue, 8 Sep 2020 18:06:27 +0100 Subject: [PATCH] Potential fix for GunDB taking a lot of time to complete .put --- services/gunDB/contact-api/jobs/onOrders.js | 52 +++++++++++++++------ 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/services/gunDB/contact-api/jobs/onOrders.js b/services/gunDB/contact-api/jobs/onOrders.js index bf3f45a2..b3088ff2 100644 --- a/services/gunDB/contact-api/jobs/onOrders.js +++ b/services/gunDB/contact-api/jobs/onOrders.js @@ -191,22 +191,44 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => { const invoicePutStartTime = Date.now() - await new Promise((res, rej) => { - getUser() - .get(Key.ORDER_TO_RESPONSE) - .get(orderID) - .put(orderResponse, ack => { - if (ack.err && typeof ack.err !== 'number') { - rej( - new Error( - `Error saving encrypted invoice to order to response usergraph: ${ack}` + // Calling .put on an object on GunDB seems + // to take a lot of time for some users + await Promise.all([ + new Promise((res, rej) => { + getUser() + .get(Key.ORDER_TO_RESPONSE) + .get(orderID) + .get('response') + .put(orderResponse.response, ack => { + if (ack.err && typeof ack.err !== 'number') { + rej( + new Error( + `Error saving encrypted invoice to order to response usergraph: ${ack}` + ) ) - ) - } else { - res() - } - }) - }) + } else { + res() + } + }) + }), + await new Promise((res, rej) => { + getUser() + .get(Key.ORDER_TO_RESPONSE) + .get(orderID) + .get('type') + .put(orderResponse.type, ack => { + if (ack.err && typeof ack.err !== 'number') { + rej( + new Error( + `Error saving encrypted invoice to order to response usergraph: ${ack}` + ) + ) + } else { + res() + } + }) + }) + ]) const invoicePutEndTime = Date.now() - invoicePutStartTime