Skip to content

Commit 2c0927d

Browse files
committed
fix reconcile (#410)
Signed-off-by: Lipovsky, Tomas <[email protected]>
1 parent a4a345f commit 2c0927d

File tree

2 files changed

+37
-20
lines changed

2 files changed

+37
-20
lines changed

controllers/zookeepercluster_controller.go

+11-8
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,11 @@ func (r *ZookeeperClusterReconciler) Reconcile(_ context.Context, request ctrl.R
100100
}
101101
return reconcile.Result{Requeue: true}, nil
102102
}
103+
if finalized, err := r.reconcileFinalizers(instance); err != nil || finalized {
104+
return reconcile.Result{}, err
105+
}
106+
103107
for _, fun := range []reconcileFun{
104-
r.reconcileFinalizers,
105108
r.reconcileConfigMap,
106109
r.reconcileStatefulSet,
107110
r.reconcileClientService,
@@ -671,30 +674,30 @@ func (r *ZookeeperClusterReconciler) yamlConfigMap(instance *zookeeperv1beta1.Zo
671674
return yamlexporter.GenerateOutputYAMLFile(subdir, cm.Kind, cm)
672675
}
673676

674-
func (r *ZookeeperClusterReconciler) reconcileFinalizers(instance *zookeeperv1beta1.ZookeeperCluster) (err error) {
677+
func (r *ZookeeperClusterReconciler) reconcileFinalizers(instance *zookeeperv1beta1.ZookeeperCluster) (finalized bool, err error) {
675678
if instance.Spec.Persistence != nil && instance.Spec.Persistence.VolumeReclaimPolicy != zookeeperv1beta1.VolumeReclaimPolicyDelete {
676-
return nil
679+
return false, nil
677680
}
678681
if instance.DeletionTimestamp.IsZero() {
679682
if !utils.ContainsString(instance.ObjectMeta.Finalizers, utils.ZkFinalizer) && !config.DisableFinalizer {
680683
instance.ObjectMeta.Finalizers = append(instance.ObjectMeta.Finalizers, utils.ZkFinalizer)
681684
if err = r.Client.Update(context.TODO(), instance); err != nil {
682-
return err
685+
return false, err
683686
}
684687
}
685-
return r.cleanupOrphanPVCs(instance)
688+
return false, r.cleanupOrphanPVCs(instance)
686689
} else {
687690
if utils.ContainsString(instance.ObjectMeta.Finalizers, utils.ZkFinalizer) {
688691
if err = r.cleanUpAllPVCs(instance); err != nil {
689-
return err
692+
return false, err
690693
}
691694
instance.ObjectMeta.Finalizers = utils.RemoveString(instance.ObjectMeta.Finalizers, utils.ZkFinalizer)
692695
if err = r.Client.Update(context.TODO(), instance); err != nil {
693-
return err
696+
return false, err
694697
}
695698
}
696699
}
697-
return nil
700+
return true, nil
698701
}
699702

700703
func (r *ZookeeperClusterReconciler) getPVCCount(instance *zookeeperv1beta1.ZookeeperCluster) (pvcCount int, err error) {

controllers/zookeepercluster_controller_test.go

+26-12
Original file line numberDiff line numberDiff line change
@@ -495,9 +495,10 @@ var _ = Describe("ZookeeperCluster Controller", func() {
495495

496496
Context("Checking client", func() {
497497
var (
498-
cl client.Client
499-
err error
500-
count int
498+
cl client.Client
499+
err error
500+
count int
501+
finalized bool
501502
)
502503

503504
BeforeEach(func() {
@@ -537,8 +538,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
537538
_ = cl.Get(context.TODO(), req.NamespacedName, z)
538539
z.Spec.Persistence.VolumeReclaimPolicy = v1beta1.VolumeReclaimPolicyDelete
539540
cl.Update(context.TODO(), z)
540-
err = r.reconcileFinalizers(z)
541+
finalized, err = r.reconcileFinalizers(z)
541542
Ω(err).To(BeNil())
543+
Ω(finalized).To(BeFalse())
542544
})
543545

544546
It("should delete pvc", func() {
@@ -588,32 +590,42 @@ var _ = Describe("ZookeeperCluster Controller", func() {
588590

589591
Context("reconcileFinalizers", func() {
590592
var (
591-
cl client.Client
592-
err error
593+
cl client.Client
594+
err error
595+
finalized bool
593596
)
594597
BeforeEach(func() {
595598
z.WithDefaults()
596599
z.Spec.Persistence = nil
597600
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(z).Build()
598601
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
599602
res, err = r.Reconcile(context.TODO(), req)
600-
err = r.reconcileFinalizers(z)
603+
finalized, err = r.reconcileFinalizers(z)
601604
// update deletion timestamp
602605
_ = cl.Get(context.TODO(), req.NamespacedName, z)
603606
now := metav1.Now()
604607
z.SetDeletionTimestamp(&now)
605608
cl.Update(context.TODO(), z)
606-
err = r.reconcileFinalizers(z)
607609
})
608610
It("should not raise an error", func() {
611+
finalized, err = r.reconcileFinalizers(z)
609612
Ω(err).To(BeNil())
613+
Ω(finalized).To(BeFalse())
614+
})
615+
It("should not raise an error", func() {
616+
z.Spec.Persistence.VolumeReclaimPolicy = v1beta1.VolumeReclaimPolicyDelete
617+
cl.Update(context.TODO(), z)
618+
finalized, err = r.reconcileFinalizers(z)
619+
Ω(err).To(BeNil())
620+
Ω(finalized).To(BeTrue())
610621
})
611622
})
612623

613624
Context("reconcileFinalizers", func() {
614625
var (
615-
cl client.Client
616-
err error
626+
cl client.Client
627+
err error
628+
finalized bool
617629
)
618630
BeforeEach(func() {
619631
z.WithDefaults()
@@ -623,16 +635,18 @@ var _ = Describe("ZookeeperCluster Controller", func() {
623635
It("should have 1 finalizer, should not raise an error", func() {
624636
config.DisableFinalizer = false
625637
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
626-
err = r.reconcileFinalizers(z)
638+
finalized, err = r.reconcileFinalizers(z)
627639
Expect(z.ObjectMeta.Finalizers).To(HaveLen(1))
628640
Ω(err).To(BeNil())
641+
Ω(finalized).To(BeFalse())
629642
})
630643
It("should have 0 finalizer, should not raise an error", func() {
631644
config.DisableFinalizer = true
632645
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
633-
err = r.reconcileFinalizers(z)
646+
finalized, err = r.reconcileFinalizers(z)
634647
Expect(z.ObjectMeta.Finalizers).To(HaveLen(0))
635648
Ω(err).To(BeNil())
649+
Ω(finalized).To(BeFalse())
636650
})
637651
})
638652

0 commit comments

Comments
 (0)