From ceed9ff2f33ac31ad4cda0fb7f80f76925caf572 Mon Sep 17 00:00:00 2001 From: Jay Date: Fri, 17 Apr 2026 19:33:34 -0400 Subject: [PATCH] Update comments. --- initiator/pool.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/initiator/pool.go b/initiator/pool.go index 94ce3e6..9b8408e 100644 --- a/initiator/pool.go +++ b/initiator/pool.go @@ -67,7 +67,9 @@ func NewPool(config *PoolConfig, logger *slog.Logger) (*Pool, error) { config = GetDefaultPoolConfig() } - // if a custom factory is supplied, config.WorkerConfig is not used + // If a custom factory is supplied, config.WorkerConfig is not used. + // The factory function should be non-blocking or else Connect() may cause + // deadlocks. if config.WorkerFactory == nil { config.WorkerFactory = func(id string, stop <-chan struct{}) (*Worker, error) { return NewWorker(id, stop, config.WorkerConfig) @@ -145,7 +147,6 @@ func (p *Pool) Connect(id string) error { return err } - // Check for existing connection in pool p.mu.Lock() defer p.mu.Unlock() @@ -161,6 +162,7 @@ func (p *Pool) Connect(id string) error { // Create new worker stop := make(chan struct{}) + // The worker factory must be non-blocking to avoid deadlocks worker, err := p.config.WorkerFactory(id, stop) if err != nil { close(stop)