From d573217bd7be1ca18e48d2b77ea9e6a0b39af36b Mon Sep 17 00:00:00 2001 From: fusion44 Date: Sun, 26 Jun 2022 10:59:56 +0200 Subject: [PATCH] fix(LND_GRPC): two potential async bugs * gRPC channel not created in all cases * possible infinite loop while waiting for lnd to boot up refs #126 --- app/repositories/ln_impl/lnd_grpc.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/repositories/ln_impl/lnd_grpc.py b/app/repositories/ln_impl/lnd_grpc.py index b28194a..ed13c03 100644 --- a/app/repositories/ln_impl/lnd_grpc.py +++ b/app/repositories/ln_impl/lnd_grpc.py @@ -129,7 +129,12 @@ async def _check_lnd_status( channel = grpc.aio.secure_channel(_lnd_grpc_url, _combined_creds) lnd_stub = lnrpc.LightningStub(channel) await lnd_stub.GetInfo(ln.GetInfoRequest()) + + if _channel is None: + _create_stubs() + await init_queue.put(InitLnRepoUpdate(state=LnInitState.DONE)) + break except grpc.aio._call.AioRpcError as error: details = error.details() logging.debug(f"Waiting for LND daemon... Details {details}") @@ -551,7 +556,13 @@ async def _wait_wallet_fully_ready(): while True: try: - await _lnd_stub.GetInfo(ln.GetInfoRequest()) + info = await _lnd_stub.GetInfo(ln.GetInfoRequest()) + + if info != None: + logging.debug( + f"LND_GRPC: _wait_wallet_fully_ready() breaking out of loop" + ) + break except grpc.aio._call.AioRpcError as error: details = error.details() if (