Skip to content

Commit 130f5cc

Browse files
AMeceacalind
authored andcommitted
Fix runtime error when .spec.replicas not set on cluster
1 parent 27e2b82 commit 130f5cc

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

pkg/controller/orchestrator/orchestrator_controller.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -186,26 +186,27 @@ func (r *ReconcileMysqlCluster) Reconcile(request reconcile.Request) (reconcile.
186186
return reconcile.Result{}, err
187187
}
188188

189-
log.Info("reconciling cluster", "cluster", cluster)
190-
191189
// save old status
192190
status := *cluster.Status.DeepCopy()
191+
log.Info("reconciling cluster", "cluster", cluster)
193192

194-
syncers := []syncer.Interface{
195-
// this syncer mutuates the cluster and updates it. Should be the first syncer
196-
newFinalizerSyncer(r.Client, r.scheme, cluster, r.orcClient),
197-
NewOrcUpdater(cluster, r.recorder, r.orcClient),
193+
// this syncer mutates the cluster and updates it. Should be the first syncer
194+
finSyncer := newFinalizerSyncer(r.Client, r.scheme, cluster, r.orcClient)
195+
if err := syncer.Sync(context.TODO(), finSyncer, r.recorder); err != nil {
196+
return reconcile.Result{}, err
198197
}
199198

200-
// run the syncers
201-
for _, s := range syncers {
202-
if err := syncer.Sync(context.TODO(), s, r.recorder); err != nil {
203-
return reconcile.Result{}, err
204-
}
199+
// Set defaults on cluster, should be set here because the syncer from above fetch a new copy of the cluster
200+
// Some filed like .spec.replicas can be nil and throw a panic error.
201+
// By setting defaults will ensure that all fields are set at least with a default value.
202+
r.scheme.Default(cluster.Unwrap())
203+
204+
orcSyncer := NewOrcUpdater(cluster, r.recorder, r.orcClient)
205+
if err := syncer.Sync(context.TODO(), orcSyncer, r.recorder); err != nil {
206+
return reconcile.Result{}, err
205207
}
206208

207-
// update cluster
208-
// TODO: make orcUpdater to update cluster
209+
// update cluster because newOrcUpdater syncer updates the .Status
209210
if !reflect.DeepEqual(status, cluster.Unwrap().Status) && cluster.DeletionTimestamp == nil {
210211
log.V(1).Info("update cluster", "diff", deep.Equal(status, cluster.Unwrap().Status))
211212

0 commit comments

Comments
 (0)