@@ -146,24 +146,9 @@ func NewContainer(ctx context.Context, platform stdio.Platform, r *task.CreateTa
146146 }
147147 pid := p .Pid ()
148148 if pid > 0 {
149- var cg interface {}
150- if cgroups .Mode () == cgroups .Unified {
151- g , err := cgroupsv2 .PidGroupPath (pid )
152- if err != nil {
153- log .G (ctx ).WithError (err ).Errorf ("loading cgroup2 for %d" , pid )
154- return container , nil
155- }
156- cg , err = cgroupsv2 .Load (g )
157- if err != nil {
158- log .G (ctx ).WithError (err ).Errorf ("loading cgroup2 for %d" , pid )
159- }
160- } else {
161- cg , err = cgroup1 .Load (cgroup1 .PidPath (pid ))
162- if err != nil {
163- log .G (ctx ).WithError (err ).Errorf ("loading cgroup for %d" , pid )
164- }
149+ if cg , err := loadProcessCgroup (ctx , pid ); err == nil {
150+ container .cgroup = cg
165151 }
166- container .cgroup = cg
167152 }
168153 return container , nil
169154}
@@ -367,23 +352,9 @@ func (c *Container) Start(ctx context.Context, r *task.StartRequest) (process.Pr
367352 return p , err
368353 }
369354 if c .Cgroup () == nil && p .Pid () > 0 {
370- var cg interface {}
371- if cgroups .Mode () == cgroups .Unified {
372- g , err := cgroupsv2 .PidGroupPath (p .Pid ())
373- if err != nil {
374- log .G (ctx ).WithError (err ).Errorf ("loading cgroup2 for %d" , p .Pid ())
375- }
376- cg , err = cgroupsv2 .Load (g )
377- if err != nil {
378- log .G (ctx ).WithError (err ).Errorf ("loading cgroup2 for %d" , p .Pid ())
379- }
380- } else {
381- cg , err = cgroup1 .Load (cgroup1 .PidPath (p .Pid ()))
382- if err != nil {
383- log .G (ctx ).WithError (err ).Errorf ("loading cgroup for %d" , p .Pid ())
384- }
355+ if cg , err := loadProcessCgroup (ctx , p .Pid ()); err == nil {
356+ c .cgroup = cg
385357 }
386- c .cgroup = cg
387358 }
388359 return p , nil
389360}
@@ -512,3 +483,25 @@ func (c *Container) HasPid(pid int) bool {
512483 }
513484 return false
514485}
486+
487+ func loadProcessCgroup (ctx context.Context , pid int ) (cg interface {}, err error ) {
488+ if cgroups .Mode () == cgroups .Unified {
489+ g , err := cgroupsv2 .PidGroupPath (pid )
490+ if err != nil {
491+ log .G (ctx ).WithError (err ).Errorf ("loading cgroup2 for %d" , pid )
492+ return nil , err
493+ }
494+ cg , err = cgroupsv2 .Load (g )
495+ if err != nil {
496+ log .G (ctx ).WithError (err ).Errorf ("loading cgroup2 for %d" , pid )
497+ return nil , err
498+ }
499+ } else {
500+ cg , err = cgroup1 .Load (cgroup1 .PidPath (pid ))
501+ if err != nil {
502+ log .G (ctx ).WithError (err ).Errorf ("loading cgroup for %d" , pid )
503+ return nil , err
504+ }
505+ }
506+ return cg , nil
507+ }
0 commit comments