Skip to content

Commit ede2630

Browse files
committed
Do not update status when reconciler exits due to panic
Currently we use deferred call to always update the status field when Reconciler call exits, which seems correct for any other error except Reconciler exits due to panic. This change adds a call to recover function and try to handle panic and log error. Closes: OSPRH-16954
1 parent 4571c1d commit ede2630

8 files changed

+40
-0
lines changed

controllers/designate_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,11 @@ func (r *DesignateReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
174174
// Always patch the instance status when exiting this function so we can
175175
// persist any changes.
176176
defer func() {
177+
// Don't update the status, if Reconciler Panics
178+
if r := recover(); r != nil {
179+
Log.Info(fmt.Sprintf("Panic during reconcile %v\n", r))
180+
panic(r)
181+
}
177182
condition.RestoreLastTransitionTimes(
178183
&instance.Status.Conditions, savedConditions)
179184
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {

controllers/designateapi_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@ func (r *DesignateAPIReconciler) Reconcile(ctx context.Context, req ctrl.Request
162162
// Always patch the instance status when exiting this function so we can
163163
// persist any changes.
164164
defer func() {
165+
// Don't update the status, if Reconciler Panics
166+
if r := recover(); r != nil {
167+
Log.Info(fmt.Sprintf("Panic during reconcile %v\n", r))
168+
panic(r)
169+
}
165170
condition.RestoreLastTransitionTimes(
166171
&instance.Status.Conditions, savedConditions)
167172
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {

controllers/designatebackendbind9_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@ func (r *DesignateBackendbind9Reconciler) Reconcile(ctx context.Context, req ctr
141141
// Always patch the instance status when exiting this function so we can
142142
// persist any changes.
143143
defer func() {
144+
// Don't update the status, if Reconciler Panics
145+
if rc := recover(); rc != nil {
146+
r.Log.Info(fmt.Sprintf("Panic during reconcile %v\n", rc))
147+
panic(rc)
148+
}
144149
condition.RestoreLastTransitionTimes(
145150
&instance.Status.Conditions, savedConditions)
146151
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {

controllers/designatecentral_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ func (r *DesignateCentralReconciler) Reconcile(ctx context.Context, req ctrl.Req
146146
// Always patch the instance status when exiting this function so we can
147147
// persist any changes.
148148
defer func() {
149+
// Don't update the status, if Reconciler Panics
150+
if r := recover(); r != nil {
151+
Log.Info(fmt.Sprintf("Panic during reconcile %v\n", r))
152+
panic(r)
153+
}
149154
condition.RestoreLastTransitionTimes(
150155
&instance.Status.Conditions, savedConditions)
151156
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {

controllers/designatemdns_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,11 @@ func (r *DesignateMdnsReconciler) Reconcile(ctx context.Context, req ctrl.Reques
145145
// Always patch the instance status when exiting this function so we can
146146
// persist any changes.
147147
defer func() {
148+
// Don't update the status, if Reconciler Panics
149+
if rc := recover(); rc != nil {
150+
r.Log.Info(fmt.Sprintf("Panic during reconcile %v\n", rc))
151+
panic(rc)
152+
}
148153
condition.RestoreLastTransitionTimes(
149154
&instance.Status.Conditions, savedConditions)
150155
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {

controllers/designateproducer_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,11 @@ func (r *DesignateProducerReconciler) Reconcile(ctx context.Context, req ctrl.Re
145145
// Always patch the instance status when exiting this function so we can
146146
// persist any changes.
147147
defer func() {
148+
// Don't update the status, if Reconciler Panics
149+
if r := recover(); r != nil {
150+
Log.Info(fmt.Sprintf("Panic during reconcile %v\n", r))
151+
panic(r)
152+
}
148153
condition.RestoreLastTransitionTimes(
149154
&instance.Status.Conditions, savedConditions)
150155
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {

controllers/designateunbound_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ func (r *UnboundReconciler) Reconcile(ctx context.Context, req ctrl.Request) (re
117117
// Always patch the instance status when exiting this function so we can
118118
// persist any changes.
119119
defer func() {
120+
// Don't update the status, if Reconciler Panics
121+
if rc := recover(); rc != nil {
122+
r.Log.Info(fmt.Sprintf("Panic during reconcile %v\n", rc))
123+
panic(rc)
124+
}
120125
condition.RestoreLastTransitionTimes(
121126
&instance.Status.Conditions, savedConditions)
122127
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {

controllers/designateworker_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,11 @@ func (r *DesignateWorkerReconciler) Reconcile(ctx context.Context, req ctrl.Requ
145145
// Always patch the instance status when exiting this function so we can
146146
// persist any changes.
147147
defer func() {
148+
// Don't update the status, if Reconciler Panics
149+
if r := recover(); r != nil {
150+
Log.Info(fmt.Sprintf("Panic during reconcile %v\n", r))
151+
panic(r)
152+
}
148153
condition.RestoreLastTransitionTimes(
149154
&instance.Status.Conditions, savedConditions)
150155
if instance.Status.Conditions.IsUnknown(condition.ReadyCondition) {

0 commit comments

Comments
 (0)