From f00329d7c7e2349ee74baf074689de92bfe1d0ff Mon Sep 17 00:00:00 2001 From: sputn1ck Date: Wed, 17 Jan 2024 15:25:35 +0100 Subject: [PATCH] loopd: hide reservation manager behind flag. --- loopd/config.go | 2 +- loopd/daemon.go | 64 ++++++++++++++++++++------------------ loopd/swapclient_server.go | 4 +++ 3 files changed, 39 insertions(+), 31 deletions(-) diff --git a/loopd/config.go b/loopd/config.go index 6e92912..3fd5663 100644 --- a/loopd/config.go +++ b/loopd/config.go @@ -168,7 +168,7 @@ type Config struct { TotalPaymentTimeout time.Duration `long:"totalpaymenttimeout" description:"The timeout to use for off-chain payments."` MaxPaymentRetries int `long:"maxpaymentretries" description:"The maximum number of times an off-chain payment may be retried."` - EnableExperimental bool `long:"experimental" description:"Enable experimental features: taproot HTLCs and MuSig2 loop out sweeps."` + EnableExperimental bool `long:"experimental" description:"Enable experimental features: reservations"` Lnd *lndConfig `group:"lnd" namespace:"lnd"` diff --git a/loopd/daemon.go b/loopd/daemon.go index d3f48be..1d7027d 100644 --- a/loopd/daemon.go +++ b/loopd/daemon.go @@ -484,18 +484,20 @@ func (d *Daemon) initialize(withMacaroonService bool) error { } // Create the reservation rpc server. - reservationStore := reservation.NewSQLStore(baseDb) - reservationConfig := &reservation.Config{ - Store: reservationStore, - Wallet: d.lnd.WalletKit, - ChainNotifier: d.lnd.ChainNotifier, - ReservationClient: reservationClient, - FetchL402: swapClient.Server.FetchL402, - } + if d.cfg.EnableExperimental { + reservationStore := reservation.NewSQLStore(baseDb) + reservationConfig := &reservation.Config{ + Store: reservationStore, + Wallet: d.lnd.WalletKit, + ChainNotifier: d.lnd.ChainNotifier, + ReservationClient: reservationClient, + FetchL402: swapClient.Server.FetchL402, + } - d.reservationManager = reservation.NewManager( - reservationConfig, - ) + d.reservationManager = reservation.NewManager( + reservationConfig, + ) + } // Now finally fully initialize the swap client RPC server instance. d.swapClientServer = swapClientServer{ @@ -576,28 +578,30 @@ func (d *Daemon) initialize(withMacaroonService bool) error { }() // Start the reservation manager. - d.wg.Add(1) - go func() { - defer d.wg.Done() + if d.reservationManager != nil { + d.wg.Add(1) + go func() { + defer d.wg.Done() - // We need to know the current block height to properly - // initialize the reservation manager. - getInfo, err := d.lnd.Client.GetInfo(d.mainCtx) - if err != nil { - d.internalErrChan <- err - return - } + // We need to know the current block height to properly + // initialize the reservation manager. + getInfo, err := d.lnd.Client.GetInfo(d.mainCtx) + if err != nil { + d.internalErrChan <- err + return + } - log.Info("Starting reservation manager") - defer log.Info("Reservation manager stopped") + log.Info("Starting reservation manager") + defer log.Info("Reservation manager stopped") - err = d.reservationManager.Run( - d.mainCtx, int32(getInfo.BlockHeight), - ) - if err != nil && !errors.Is(err, context.Canceled) { - d.internalErrChan <- err - } - }() + err = d.reservationManager.Run( + d.mainCtx, int32(getInfo.BlockHeight), + ) + if err != nil && !errors.Is(err, context.Canceled) { + d.internalErrChan <- err + } + }() + } // Last, start our internal error handler. This will return exactly one // error or nil on the main error channel to inform the caller that diff --git a/loopd/swapclient_server.go b/loopd/swapclient_server.go index 31b27db..845885c 100644 --- a/loopd/swapclient_server.go +++ b/loopd/swapclient_server.go @@ -1145,6 +1145,10 @@ func (s *swapClientServer) ListReservations(ctx context.Context, _ *clientrpc.ListReservationsRequest) ( *clientrpc.ListReservationsResponse, error) { + if s.reservationManager == nil { + return nil, status.Error(codes.Unimplemented, + "Restart loop with --experimental") + } reservations, err := s.reservationManager.GetReservations( ctx, )