Merge pull request #5071 from AkihiroSuda/restart-parallel
restart: parallelize reconcile()
This commit is contained in:
commit
119fe70469
@ -19,6 +19,7 @@ package monitor
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/containerd/containerd"
|
||||
@ -164,19 +165,33 @@ func (m *monitor) reconcile(ctx context.Context) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var wgNSLoop sync.WaitGroup
|
||||
for _, name := range ns {
|
||||
ctx = namespaces.WithNamespace(ctx, name)
|
||||
name := name
|
||||
wgNSLoop.Add(1)
|
||||
go func() {
|
||||
defer wgNSLoop.Done()
|
||||
ctx := namespaces.WithNamespace(ctx, name)
|
||||
changes, err := m.monitor(ctx)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Error("monitor for changes")
|
||||
continue
|
||||
return
|
||||
}
|
||||
var wgChangesLoop sync.WaitGroup
|
||||
for _, c := range changes {
|
||||
c := c
|
||||
wgChangesLoop.Add(1)
|
||||
go func() {
|
||||
defer wgChangesLoop.Done()
|
||||
if err := c.apply(ctx, m.client); err != nil {
|
||||
logrus.WithError(err).Error("apply change")
|
||||
}
|
||||
}()
|
||||
}
|
||||
wgChangesLoop.Wait()
|
||||
}()
|
||||
}
|
||||
wgNSLoop.Wait()
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user