From 9520a390edb8720eeac4b2f95d16ef42a542c918 Mon Sep 17 00:00:00 2001 From: Boris Nagaev Date: Thu, 6 Nov 2025 20:28:22 -0300 Subject: [PATCH] chainrpc: return Unavailable while notifier starts From v0.20.0-rc3 (commit c6f458e478f9ef2cf1d394972bfbc512862c6707) onward the ChainNotifier sub-server may still be initialising when clients attempt to subscribe, currently resulting in a gRPC Unknown error with a plain-text message. Change the notifier RPC endpoints to return codes.Unavailable instead so clients can reliably interpret the condition as "retry later" and handle the startup lag without unstable string matching. --- lnrpc/chainrpc/chain_server.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lnrpc/chainrpc/chain_server.go b/lnrpc/chainrpc/chain_server.go index da68e034b..e42a6843c 100644 --- a/lnrpc/chainrpc/chain_server.go +++ b/lnrpc/chainrpc/chain_server.go @@ -18,6 +18,8 @@ import ( "github.com/lightningnetwork/lnd/lnrpc" "github.com/lightningnetwork/lnd/macaroons" "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "gopkg.in/macaroon-bakery.v2/bakery" ) @@ -84,8 +86,8 @@ var ( // ErrChainNotifierServerNotActive indicates that the chain notifier hasn't // finished the startup process. - ErrChainNotifierServerNotActive = errors.New("chain notifier RPC is " + - "still in the process of starting") + ErrChainNotifierServerNotActive = status.Error(codes.Unavailable, + "chain notifier RPC is still in the process of starting") ) // ServerShell is a shell struct holding a reference to the actual sub-server.