@@ -233,17 +233,14 @@ func (daemon *Daemon) loadContainers(ctx context.Context) (map[string]map[string
233233 sem := semaphore .NewWeighted (int64 (parallelLimit ))
234234
235235 for _ , v := range dir {
236- group .Add (1 )
237- go func (id string ) {
238- defer group .Done ()
239- _ = sem .Acquire (context .Background (), 1 )
236+ id := v .Name ()
237+ group .Go (func () {
238+ _ = sem .Acquire (context .WithoutCancel (ctx ), 1 )
240239 defer sem .Release (1 )
241240
242- logger := log .G (ctx ).WithField ("container" , id )
243-
244241 c , err := daemon .load (id )
245242 if err != nil {
246- logger . WithError ( err ).Error ("failed to load container" )
243+ log . G ( ctx ). WithFields (log. Fields { "error" : err , "container" : id } ).Error ("Failed to load container" )
247244 return
248245 }
249246
@@ -256,7 +253,7 @@ func (daemon *Daemon) loadContainers(ctx context.Context) (map[string]map[string
256253 containers [c .ID ] = c
257254 }
258255 mapLock .Unlock ()
259- }( v . Name () )
256+ })
260257 }
261258 group .Wait ()
262259
@@ -284,10 +281,11 @@ func (daemon *Daemon) restore(ctx context.Context, cfg *configStore, containers
284281 activeSandboxes := make (map [string ]any )
285282
286283 for _ , c := range containers {
287- group .Add (1 )
288- go func (c * container.Container ) {
289- defer group .Done ()
290- _ = sem .Acquire (context .Background (), 1 )
284+ group .Go (func () {
285+ if err := sem .Acquire (context .WithoutCancel (ctx ), 1 ); err != nil {
286+ // ctx is done; should never happen.
287+ return
288+ }
291289 defer sem .Release (1 )
292290
293291 logger := log .G (ctx ).WithField ("container" , c .ID )
@@ -317,7 +315,7 @@ func (daemon *Daemon) restore(ctx context.Context, cfg *configStore, containers
317315 mapLock .Unlock ()
318316 return
319317 }
320- }( c )
318+ })
321319 }
322320 group .Wait ()
323321
0 commit comments