Skip to content

Commit fc48477

Browse files
committed
SQUASH: better disengage error behaviour
Signed-off-by: Dr. Stefan Schimanski <[email protected]>
1 parent 5bafe05 commit fc48477

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

pkg/controller/multicluster.go

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"context"
2121
"sync"
2222

23+
kerrors "k8s.io/apimachinery/pkg/util/errors"
2324
"sigs.k8s.io/controller-runtime/pkg/cluster"
2425
)
2526

@@ -64,22 +65,33 @@ func (c *multiClusterController) Engage(clusterCtx context.Context, cl cluster.C
6465
return nil
6566
}
6667

68+
engaged := make([]cluster.Aware, 0, len(c.awares)+1)
69+
disengage := func() error {
70+
var errs []error
71+
for _, aware := range engaged {
72+
if err := aware.Disengage(clusterCtx, cl); err != nil {
73+
errs = append(errs, err)
74+
}
75+
}
76+
return kerrors.NewAggregate(errs)
77+
}
78+
6779
// pass through in case the controller itself is cluster aware
6880
if ctrl, ok := c.Controller.(cluster.Aware); ok {
6981
if err := ctrl.Engage(clusterCtx, cl); err != nil {
7082
return err
7183
}
84+
engaged = append(engaged, ctrl)
7285
}
7386

7487
// start watches on the cluster
7588
if err := c.watcher.Watch(clusterCtx, cl); err != nil {
76-
if ctrl, ok := c.Controller.(cluster.AwareRunnable); ok {
77-
if err := ctrl.Disengage(clusterCtx, cl); err != nil {
78-
return err
79-
}
89+
if err := disengage(); err != nil {
90+
return err
8091
}
8192
return err
8293
}
94+
8395
c.clusters[cl.Name()] = struct{}{}
8496

8597
return nil
@@ -96,11 +108,12 @@ func (c *multiClusterController) Disengage(ctx context.Context, cl cluster.Clust
96108
delete(c.clusters, cl.Name())
97109

98110
// pass through in case the controller itself is cluster aware
99-
if ctrl, ok := c.Controller.(cluster.AwareRunnable); ok {
111+
var errs []error
112+
if ctrl, ok := c.Controller.(cluster.Aware); ok {
100113
if err := ctrl.Disengage(ctx, cl); err != nil {
101-
return err
114+
errs = append(errs, err)
102115
}
103116
}
104117

105-
return nil
118+
return kerrors.NewAggregate(errs)
106119
}

0 commit comments

Comments
 (0)