diff --git a/adapter/endpoint/manager.go b/adapter/endpoint/manager.go index 5a633bee..00f8ea3e 100644 --- a/adapter/endpoint/manager.go +++ b/adapter/endpoint/manager.go @@ -35,7 +35,6 @@ func NewManager(logger log.ContextLogger, registry adapter.EndpointRegistry) *Ma func (m *Manager) Start(stage adapter.StartStage) error { m.access.Lock() - defer m.access.Unlock() if m.started && m.stage >= stage { panic("already started") } @@ -43,9 +42,12 @@ func (m *Manager) Start(stage adapter.StartStage) error { m.stage = stage if stage == adapter.StartStateStart { // started with outbound manager + m.access.Unlock() return nil } - for _, endpoint := range m.endpoints { + endpoints := m.endpoints + m.access.Unlock() + for _, endpoint := range endpoints { err := adapter.LegacyStart(endpoint, stage) if err != nil { return E.Cause(err, stage, " endpoint/", endpoint.Type(), "[", endpoint.Tag(), "]")