Explorar o código

Fix Outbound deadlock

Alireza Ahmadi hai 7 meses
pai
achega
9319e58a61
Modificáronse 1 ficheiros con 2 adicións e 2 borrados
  1. 2 2
      adapter/outbound/manager.go

+ 2 - 2
adapter/outbound/manager.go

@@ -246,8 +246,6 @@ func (m *Manager) Create(ctx context.Context, router adapter.Router, logger log.
 	if err != nil {
 		return err
 	}
-	m.access.Lock()
-	defer m.access.Unlock()
 	if m.started {
 		for _, stage := range adapter.ListStartStages {
 			err = adapter.LegacyStart(outbound, stage)
@@ -256,6 +254,8 @@ func (m *Manager) Create(ctx context.Context, router adapter.Router, logger log.
 			}
 		}
 	}
+	m.access.Lock()
+	defer m.access.Unlock()
 	if existsOutbound, loaded := m.outboundByTag[tag]; loaded {
 		if m.started {
 			err = common.Close(existsOutbound)