@@ -8,8 +8,10 @@ import (
88 "github.com/btcsuite/btcd/btcec/v2"
99 "github.com/btcsuite/btcd/chaincfg/chainhash"
1010 "github.com/btcsuite/btcd/wire"
11+ "github.com/davecgh/go-spew/spew"
1112 "github.com/lightningnetwork/lnd/chainntnfs"
1213 "github.com/lightningnetwork/lnd/fn"
14+ "github.com/lightningnetwork/lnd/lnutils"
1315 "github.com/lightningnetwork/lnd/lnwire"
1416)
1517
@@ -204,6 +206,10 @@ func (s *StateMachine[Event, Env]) Stop() {
204206//
205207// TODO(roasbeef): bool if processed?
206208func (s * StateMachine [Event , Env ]) SendEvent (event Event ) {
209+ log .Debugf ("FSM(%v): sending event: %v" , s .cfg .Env .Name (),
210+ lnutils .SpewLogClosure (event ),
211+ )
212+
207213 select {
208214 case s .events <- event :
209215 case <- s .quit :
@@ -236,6 +242,10 @@ func (s *StateMachine[Event, Env]) SendMessage(msg lnwire.Message) bool {
236242 return false
237243 }
238244
245+ log .Debugf ("FSM(%v): sending msg: %v" , s .cfg .Env .Name (),
246+ lnutils .SpewLogClosure (msg ),
247+ )
248+
239249 // Otherwise, try to map the message using the default message mapper.
240250 // If we can't extract an event, then we'll return false to indicate
241251 // that the message wasn't processed.
@@ -295,12 +305,20 @@ func (s *StateMachine[Event, Env]) RemoveStateSub(sub StateSubscriber[
295305// executeDaemonEvent executes a daemon event, which is a special type of event
296306// that can be emitted as part of the state transition function of the state
297307// machine. An error is returned if the type of event is unknown.
298- func (s * StateMachine [Event , Env ]) executeDaemonEvent (event DaemonEvent ) error {
308+ func (s * StateMachine [Event , Env ]) executeDaemonEvent ( //nolint:funlen
309+ event DaemonEvent ) error {
310+
299311 switch daemonEvent := event .(type ) {
300312 // This is a send message event, so we'll send the event, and also mind
301313 // any preconditions as well as post-send events.
302314 case * SendMsgEvent [Event ]:
303315 sendAndCleanUp := func () error {
316+ log .Debugf ("FSM(%v): sending message to target(%v): " +
317+ "%v" , s .cfg .Env .Name (),
318+ daemonEvent .TargetPeer .SerializeCompressed (),
319+ lnutils .SpewLogClosure (daemonEvent .Msgs ),
320+ )
321+
304322 err := s .cfg .Daemon .SendMessages (
305323 daemonEvent .TargetPeer , daemonEvent .Msgs ,
306324 )
@@ -317,6 +335,12 @@ func (s *StateMachine[Event, Env]) executeDaemonEvent(event DaemonEvent) error {
317335 go func () {
318336 defer s .wg .Done ()
319337
338+ log .Debugf ("FSM(%v): sending " +
339+ "post-send event: %v" ,
340+ s .cfg .Env .Name (),
341+ lnutils .SpewLogClosure (event ),
342+ )
343+
320344 s .SendEvent (event )
321345 }()
322346 })
@@ -340,6 +364,9 @@ func (s *StateMachine[Event, Env]) executeDaemonEvent(event DaemonEvent) error {
340364 predicateTicker := time .NewTicker (pollInterval )
341365 defer predicateTicker .Stop ()
342366
367+ log .Infof ("FSM(%v): waiting for send predicate to " +
368+ "be true" , s .cfg .Env .Name ())
369+
343370 for {
344371 select {
345372 case <- predicateTicker .C :
@@ -351,6 +378,10 @@ func (s *StateMachine[Event, Env]) executeDaemonEvent(event DaemonEvent) error {
351378 )
352379
353380 if canSend {
381+ log .Infof ("FSM(%v): send " +
382+ "active predicate" ,
383+ s .cfg .Env .Name ())
384+
354385 err := sendAndCleanUp ()
355386 if err != nil {
356387 //nolint:lll
@@ -371,6 +402,9 @@ func (s *StateMachine[Event, Env]) executeDaemonEvent(event DaemonEvent) error {
371402 // If this is a broadcast transaction event, then we'll broadcast with
372403 // the label attached.
373404 case * BroadcastTxn :
405+ log .Debugf ("FSM(%v): broadcasting txn, txid=%v" ,
406+ s .cfg .Env .Name (), daemonEvent .Tx .TxHash ())
407+
374408 err := s .cfg .Daemon .BroadcastTransaction (
375409 daemonEvent .Tx , daemonEvent .Label ,
376410 )
@@ -383,6 +417,9 @@ func (s *StateMachine[Event, Env]) executeDaemonEvent(event DaemonEvent) error {
383417 // The state machine has requested a new event to be sent once a
384418 // transaction spending a specified outpoint has confirmed.
385419 case * RegisterSpend [Event ]:
420+ log .Debugf ("FSM(%v): registering spend: %v" , s .cfg .Env .Name (),
421+ daemonEvent .OutPoint )
422+
386423 spendEvent , err := s .cfg .Daemon .RegisterSpendNtfn (
387424 & daemonEvent .OutPoint , daemonEvent .PkScript ,
388425 daemonEvent .HeightHint ,
@@ -418,6 +455,9 @@ func (s *StateMachine[Event, Env]) executeDaemonEvent(event DaemonEvent) error {
418455 // The state machine has requested a new event to be sent once a
419456 // specified txid+pkScript pair has confirmed.
420457 case * RegisterConf [Event ]:
458+ log .Debugf ("FSM(%v): registering conf: %v" , s .cfg .Env .Name (),
459+ daemonEvent .Txid )
460+
421461 numConfs := daemonEvent .NumConfs .UnwrapOr (1 )
422462 confEvent , err := s .cfg .Daemon .RegisterConfirmationsNtfn (
423463 & daemonEvent .Txid , daemonEvent .PkScript ,
@@ -462,6 +502,12 @@ func (s *StateMachine[Event, Env]) executeDaemonEvent(event DaemonEvent) error {
462502func (s * StateMachine [Event , Env ]) applyEvents (currentState State [Event , Env ],
463503 newEvent Event ) (State [Event , Env ], error ) {
464504
505+ log .Debugf ("FSM(%v): applying new event" , s .cfg .Env .Name (),
506+ lnutils .NewLogClosure (func () string {
507+ return spew .Sdump (newEvent )
508+ }),
509+ )
510+
465511 eventQueue := fn .NewQueue (newEvent )
466512
467513 // Given the next event to handle, we'll process the event, then add
@@ -472,6 +518,13 @@ func (s *StateMachine[Event, Env]) applyEvents(currentState State[Event, Env],
472518 //nolint:lll
473519 for nextEvent := eventQueue .Dequeue (); nextEvent .IsSome (); nextEvent = eventQueue .Dequeue () {
474520 err := fn .MapOptionZ (nextEvent , func (event Event ) error {
521+ log .Debugf ("FSM(%v): processing event: %v" ,
522+ s .cfg .Env .Name (),
523+ lnutils .NewLogClosure (func () string {
524+ return spew .Sdump (event )
525+ }),
526+ )
527+
475528 // Apply the state transition function of the current
476529 // state given this new event and our existing env.
477530 transition , err := currentState .ProcessEvent (
@@ -489,6 +542,10 @@ func (s *StateMachine[Event, Env]) applyEvents(currentState State[Event, Env],
489542 //
490543 //nolint:lll
491544 err := fn .MapOptionZ (events .ExternalEvents , func (dEvents DaemonEventSet ) error {
545+ log .Debugf ("FSM(%v): processing " +
546+ "daemon %v daemon events" ,
547+ s .cfg .Env .Name (), len (dEvents ))
548+
492549 for _ , dEvent := range dEvents {
493550 err := s .executeDaemonEvent (
494551 dEvent ,
@@ -508,8 +565,19 @@ func (s *StateMachine[Event, Env]) applyEvents(currentState State[Event, Env],
508565 // our event queue.
509566 //
510567 //nolint:lll
511- events .InternalEvent .WhenSome (func (inEvent Event ) {
512- eventQueue .Enqueue (inEvent )
568+ events .InternalEvent .WhenSome (func (es Event ) {
569+ log .Debugf ("FSM(%v): adding " +
570+ "new internal event " +
571+ "to queue: %v" ,
572+ s .cfg .Env .Name (),
573+ lnutils .NewLogClosure (func () string { //nolint:lll
574+ return spew .Sdump ( //nolint:lll
575+ es ,
576+ )
577+ }),
578+ )
579+
580+ eventQueue .Enqueue (es )
513581 })
514582
515583 return nil
@@ -544,6 +612,8 @@ func (s *StateMachine[Event, Env]) applyEvents(currentState State[Event, Env],
544612func (s * StateMachine [Event , Env ]) driveMachine () {
545613 defer s .wg .Done ()
546614
615+ log .Debugf ("FSM(%v): starting state machine" , s .cfg .Env .Name ())
616+
547617 currentState := s .cfg .InitialState
548618
549619 // Before we start, if we have an init daemon event specified, then
0 commit comments