better errors on streams

This commit is contained in:
hatim boufnichel 2020-09-10 18:27:05 +02:00
parent 9b76ab3a49
commit d7c155aa52

View file

@ -122,21 +122,45 @@ module.exports = (
stream.on('end', () => { stream.on('end', () => {
logger.info('New invoice stream ended, starting a new one...') logger.info('New invoice stream ended, starting a new one...')
// Prevents call stack overflow exceptions // Prevents call stack overflow exceptions
process.nextTick(() => onNewInvoice(socket)) //process.nextTick(() => onNewInvoice(socket))
}) })
stream.on('error', err => { stream.on('error', err => {
logger.error('New invoice stream error:' + subID, err) logger.error('New invoice stream error:' + subID, err)
}) })
stream.on('status', status => { stream.on('status', status => {
logger.warn('New invoice stream status:' + subID, status) logger.warn('New invoice stream status:' + subID, status)
if (status.code === 14) { switch (status.code) {
// Prevents call stack overflow exceptions case 0: {
logger.error( logger.info('[event:invoice:new] stream ok')
'[event:invoice:new] LND disconnected, sockets reconnecting in 30 seconds...' break
) }
process.nextTick(() => case 2: {
setTimeout(() => onNewInvoice(socket, subID), 30000) logger.warn('[event:invoice:new] got UNKNOWN error status')
) break
}
case 12: {
logger.warn(
'[event:invoice:new] LND locked, new registration in 60 seconds'
)
process.nextTick(() =>
setTimeout(() => onNewInvoice(socket, subID), 60000)
)
break
}
case 13: {
//https://grpc.github.io/grpc/core/md_doc_statuscodes.html
logger.error('[event:invoice:new] INTERNAL LND error')
break
}
case 14: {
logger.error(
'[event:invoice:new] LND disconnected, sockets reconnecting in 30 seconds...'
)
process.nextTick(() =>
setTimeout(() => onNewInvoice(socket, subID), 30000)
)
break
}
} }
}) })
return () => { return () => {
@ -154,20 +178,46 @@ module.exports = (
}) })
stream.on('end', () => { stream.on('end', () => {
logger.info('New transactions stream ended, starting a new one...') logger.info('New transactions stream ended, starting a new one...')
process.nextTick(() => onNewTransaction(socket)) //process.nextTick(() => onNewTransaction(socket))
}) })
stream.on('error', err => { stream.on('error', err => {
logger.error('New transactions stream error:' + subID, err) logger.error('New transactions stream error:' + subID, err)
}) })
stream.on('status', status => { stream.on('status', status => {
logger.error('New transactions stream status:' + subID, status) logger.error('New transactions stream status:' + subID, status)
if (status.code === 14) { switch (status.code) {
logger.error( case 0: {
'[event:transaction:new] LND disconnected, sockets reconnecting in 30 seconds...' logger.info('[event:transaction:new] stream ok')
) break
process.nextTick(() => }
setTimeout(() => onNewTransaction(socket, subID), 30000) case 2: {
) //Happens to fire when the grpc client lose access to macaroon file
logger.warn('[event:transaction:new] got UNKNOWN error status')
break
}
case 12: {
logger.warn(
'[event:transaction:new] LND locked, new registration in 60 seconds'
)
process.nextTick(() =>
setTimeout(() => onNewTransaction(socket, subID), 60000)
)
break
}
case 13: {
//https://grpc.github.io/grpc/core/md_doc_statuscodes.html
logger.error('[event:transaction:new] INTERNAL LND error')
break
}
case 14: {
logger.error(
'[event:transaction:new] LND disconnected, sockets reconnecting in 30 seconds...'
)
process.nextTick(() =>
setTimeout(() => onNewTransaction(socket, subID), 30000)
)
break
}
} }
}) })
return () => { return () => {