Potential fix for GunDB taking a lot of time to complete .put

This commit is contained in:
emad-salah 2020-09-08 18:06:27 +01:00
parent c5e4de1619
commit 171b1f0b77

View file

@ -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