From c579a3e93301810daa5ccce41b33c84af94211cd Mon Sep 17 00:00:00 2001 From: Slyghtning Date: Fri, 13 Jun 2025 13:00:54 +0200 Subject: [PATCH] staticaddr: fix deposit recovery deadlock --- staticaddr/deposit/manager.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/staticaddr/deposit/manager.go b/staticaddr/deposit/manager.go index 4b39690d9..44ca40d2c 100644 --- a/staticaddr/deposit/manager.go +++ b/staticaddr/deposit/manager.go @@ -191,10 +191,15 @@ func (m *Manager) recoverDeposits(ctx context.Context) error { } // Send the OnRecover event to the state machine. - err = fsm.SendEvent(ctx, OnRecover, nil) - if err != nil { - log.Errorf("Error sending OnStart event: %v", err) - } + // TODO(hieblmi): Add a unit test that would fail with the + // dead-lock before the fsm was passed in. + go func(fsm *FSM) { + err := fsm.SendEvent(ctx, OnRecover, nil) + if err != nil { + log.Errorf("Error sending OnStart event: %v", + err) + } + }(fsm) m.mu.Lock() m.activeDeposits[d.OutPoint] = fsm