Skip to content

Commit 831d494

Browse files
committed
operator: Return errors with stacktrace
During debuging of fullnameOverride the error was too general to reason about the place where it happen. This change replace almost all naked `err` case with `errors.WithStack(err)`. (cherry picked from commit bc0bdeb) # Conflicts: # operator/internal/controller/redpanda/redpanda_controller.go
1 parent b651c47 commit 831d494

File tree

1 file changed

+39
-39
lines changed

1 file changed

+39
-39
lines changed

operator/internal/controller/redpanda/redpanda_controller.go

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ func (r *RedpandaReconciler) Reconcile(c context.Context, req ctrl.Request) (ctr
209209
// if no longer managed by us, attempt to remove the finalizer
210210
controllerutil.RemoveFinalizer(rp, FinalizerKey)
211211
if err := r.Client.Update(ctx, rp); err != nil {
212-
return ctrl.Result{}, err
212+
return ctrl.Result{}, errors.WithStack(err)
213213
}
214214
}
215215

@@ -228,29 +228,29 @@ func (r *RedpandaReconciler) Reconcile(c context.Context, req ctrl.Request) (ctr
228228
controllerutil.AddFinalizer(rp, FinalizerKey)
229229
if err := r.Client.Patch(ctx, rp, patch); err != nil {
230230
log.Error(err, "unable to register finalizer")
231-
return ctrl.Result{}, err
231+
return ctrl.Result{}, errors.WithStack(err)
232232
}
233233
}
234234

235235
rp, err := r.reconcileFlux(ctx, rp)
236236
if err != nil {
237-
return ctrl.Result{}, err
237+
return ctrl.Result{}, errors.WithStack(err)
238238
}
239239

240240
if err := r.reconcileDefluxed(ctx, rp); err != nil {
241-
return ctrl.Result{}, err
241+
return ctrl.Result{}, errors.WithStack(err)
242242
}
243243

244244
if err := r.reconcileStatus(ctx, rp); err != nil {
245-
return ctrl.Result{}, err
245+
return ctrl.Result{}, errors.WithStack(err)
246246
}
247247

248248
if err := r.reconcileLicense(ctx, rp); err != nil {
249-
return ctrl.Result{}, err
249+
return ctrl.Result{}, errors.WithStack(err)
250250
}
251251

252252
if err := r.reconcileClusterConfig(ctx, rp); err != nil {
253-
return ctrl.Result{}, err
253+
return ctrl.Result{}, errors.WithStack(err)
254254
}
255255

256256
// Reconciliation has completed without any errors, therefore we observe our
@@ -284,17 +284,17 @@ func (r *RedpandaReconciler) reconcileStatus(ctx context.Context, rp *redpandav1
284284
// pull our deployments and stateful sets
285285
redpandaStatefulSets, err := redpandaStatefulSetsForCluster(ctx, r.Client, rp)
286286
if err != nil {
287-
return err
287+
return errors.WithStack(err)
288288
}
289289

290290
consoleDeployments, err := consoleDeploymentsForCluster(ctx, r.Client, rp)
291291
if err != nil {
292-
return err
292+
return errors.WithStack(err)
293293
}
294294

295295
connectorsDeployments, err := connectorsDeploymentsForCluster(ctx, r.Client, rp)
296296
if err != nil {
297-
return err
297+
return errors.WithStack(err)
298298
}
299299

300300
deployments := append(consoleDeployments, connectorsDeployments...)
@@ -320,7 +320,7 @@ func (r *RedpandaReconciler) reconcileStatus(ctx context.Context, rp *redpandav1
320320
// need to perform a decommission.
321321
needsDecommission, err := r.needsDecommission(ctx, rp, redpandaStatefulSets)
322322
if err != nil {
323-
return err
323+
return errors.WithStack(err)
324324
}
325325

326326
if needsDecommission {
@@ -367,7 +367,7 @@ func (r *RedpandaReconciler) reconcileDefluxed(ctx context.Context, rp *redpanda
367367
IsUpgrade: true,
368368
}, values)
369369
if err != nil {
370-
return err
370+
return errors.WithStack(err)
371371
}
372372

373373
var errs []error
@@ -436,7 +436,7 @@ func (r *RedpandaReconciler) reconcileDefluxed(ctx context.Context, rp *redpanda
436436

437437
// Garbage collect any objects that are no longer needed.
438438
if err := r.reconcileDefluxGC(ctx, rp, created); err != nil {
439-
return err
439+
return errors.WithStack(err)
440440
}
441441

442442
return nil
@@ -486,7 +486,7 @@ func (r *RedpandaReconciler) reconcileLicense(ctx context.Context, rp *redpandav
486486

487487
client, err := r.ClientFactory.RedpandaAdminClient(ctx, rp)
488488
if err != nil {
489-
return err
489+
return errors.WithStack(err)
490490
}
491491
defer client.Close()
492492

@@ -503,7 +503,7 @@ func (r *RedpandaReconciler) reconcileLicense(ctx context.Context, rp *redpandav
503503

504504
return nil
505505
}
506-
return err
506+
return errors.WithStack(err)
507507
}
508508

509509
licenseInfo, err := client.GetLicenseInfo(ctx)
@@ -519,7 +519,7 @@ func (r *RedpandaReconciler) reconcileLicense(ctx context.Context, rp *redpandav
519519

520520
return nil
521521
}
522-
return err
522+
return errors.WithStack(err)
523523
}
524524

525525
var message string
@@ -605,24 +605,24 @@ func (r *RedpandaReconciler) reconcileClusterConfig(ctx context.Context, rp *red
605605

606606
client, err := r.ClientFactory.RedpandaAdminClient(ctx, rp)
607607
if err != nil {
608-
return err
608+
return errors.WithStack(err)
609609
}
610610
defer client.Close()
611611

612612
config, err := r.clusterConfigFor(ctx, rp)
613613
if err != nil {
614-
return err
614+
return errors.WithStack(err)
615615
}
616616

617617
usersTXT, err := r.usersTXTFor(ctx, rp)
618618
if err != nil {
619-
return err
619+
return errors.WithStack(err)
620620
}
621621

622622
syncer := syncclusterconfig.Syncer{Client: client}
623623

624624
if err := syncer.Sync(ctx, config, usersTXT); err != nil {
625-
return err
625+
return errors.WithStack(err)
626626
}
627627

628628
apimeta.SetStatusCondition(rp.GetConditions(), metav1.Condition{
@@ -638,7 +638,7 @@ func (r *RedpandaReconciler) reconcileClusterConfig(ctx context.Context, rp *red
638638
func (r *RedpandaReconciler) usersTXTFor(ctx context.Context, rp *redpandav1alpha2.Redpanda) (map[string][]byte, error) {
639639
values, err := rp.GetValues()
640640
if err != nil {
641-
return nil, err
641+
return nil, errors.WithStack(err)
642642
}
643643

644644
if !values.Auth.SASL.Enabled {
@@ -652,7 +652,7 @@ func (r *RedpandaReconciler) usersTXTFor(ctx context.Context, rp *redpandav1alph
652652
if apierrors.IsNotFound(err) {
653653
return map[string][]byte{}, nil
654654
}
655-
return nil, err
655+
return nil, errors.WithStack(err)
656656
}
657657

658658
return users.Data, nil
@@ -668,7 +668,7 @@ func (r *RedpandaReconciler) clusterConfigFor(ctx context.Context, rp *redpandav
668668

669669
dot, err := rp.GetDot(&rest.Config{})
670670
if err != nil {
671-
return nil, err
671+
return nil, errors.WithStack(err)
672672
}
673673

674674
// The most reliable way to get the correct and full cluster config is to
@@ -687,12 +687,12 @@ func (r *RedpandaReconciler) clusterConfigFor(ctx context.Context, rp *redpandav
687687

688688
expanded, err := expander.Expand(ctx, clusterConfigTemplate)
689689
if err != nil {
690-
return nil, err
690+
return nil, errors.WithStack(err)
691691
}
692692

693693
var desired map[string]any
694694
if err := yaml.Unmarshal([]byte(expanded), &desired); err != nil {
695-
return nil, err
695+
return nil, errors.WithStack(err)
696696
}
697697

698698
return desired, nil
@@ -703,7 +703,7 @@ func (r *RedpandaReconciler) reconcileDefluxGC(ctx context.Context, rp *redpanda
703703

704704
types, err := allListTypes(r.Client)
705705
if err != nil {
706-
return err
706+
return errors.WithStack(err)
707707
}
708708

709709
// For all types in the redpanda helm chart,
@@ -720,7 +720,7 @@ func (r *RedpandaReconciler) reconcileDefluxGC(ctx context.Context, rp *redpanda
720720
log.Info("Skipping unknown GVK", "gvk", fmt.Sprintf("%T", typ))
721721
continue
722722
}
723-
return err
723+
return errors.WithStack(err)
724724
}
725725

726726
if err := apimeta.EachListItem(typ, func(o runtime.Object) error {
@@ -753,7 +753,7 @@ func (r *RedpandaReconciler) reconcileDefluxGC(ctx context.Context, rp *redpanda
753753

754754
return nil
755755
}); err != nil {
756-
return err
756+
return errors.WithStack(err)
757757
}
758758
}
759759

@@ -775,7 +775,7 @@ func (r *RedpandaReconciler) reconcileFlux(ctx context.Context, rp *redpandav1al
775775

776776
// Check if HelmRepository exists or create it
777777
if err := r.reconcileHelmRepository(ctx, rp); err != nil {
778-
return rp, err
778+
return rp, errors.WithStack(err)
779779
}
780780

781781
if !ptr.Deref(rp.Status.HelmRepositoryReady, false) {
@@ -784,7 +784,7 @@ func (r *RedpandaReconciler) reconcileFlux(ctx context.Context, rp *redpandav1al
784784

785785
// Check if HelmRelease exists or create it also
786786
if err := r.reconcileHelmRelease(ctx, rp); err != nil {
787-
return rp, err
787+
return rp, errors.WithStack(err)
788788
}
789789

790790
return rp, nil
@@ -793,7 +793,7 @@ func (r *RedpandaReconciler) reconcileFlux(ctx context.Context, rp *redpandav1al
793793
func (r *RedpandaReconciler) needsDecommission(ctx context.Context, rp *redpandav1alpha2.Redpanda, stses []*appsv1.StatefulSet) (bool, error) {
794794
client, err := r.ClientFactory.RedpandaAdminClient(ctx, rp)
795795
if err != nil {
796-
return false, err
796+
return false, errors.WithStack(err)
797797
}
798798
defer client.Close()
799799

@@ -817,11 +817,11 @@ func (r *RedpandaReconciler) needsDecommission(ctx context.Context, rp *redpanda
817817
func (r *RedpandaReconciler) reconcileHelmRelease(ctx context.Context, rp *redpandav1alpha2.Redpanda) error {
818818
hr, err := r.createHelmReleaseFromTemplate(ctx, rp)
819819
if err != nil {
820-
return err
820+
return errors.WithStack(err)
821821
}
822822

823823
if err := r.apply(ctx, hr); err != nil {
824-
return err
824+
return errors.WithStack(err)
825825
}
826826

827827
isGenerationCurrent := hr.Generation == hr.Status.ObservedGeneration
@@ -867,13 +867,13 @@ func (r *RedpandaReconciler) reconcileHelmRepository(ctx context.Context, rp *re
867867

868868
func (r *RedpandaReconciler) reconcileDelete(ctx context.Context, rp *redpandav1alpha2.Redpanda) error {
869869
if err := r.deleteHelmChart(ctx, rp); err != nil {
870-
return err
870+
return errors.WithStack(err)
871871
}
872872

873873
if controllerutil.ContainsFinalizer(rp, FinalizerKey) {
874874
controllerutil.RemoveFinalizer(rp, FinalizerKey)
875875
if err := r.Client.Update(ctx, rp); err != nil {
876-
return err
876+
return errors.WithStack(err)
877877
}
878878
}
879879
return nil
@@ -1018,7 +1018,7 @@ func (r *RedpandaReconciler) patchRedpandaStatus(ctx context.Context, rp *redpan
10181018
key := client.ObjectKeyFromObject(rp)
10191019
latest := &redpandav1alpha2.Redpanda{}
10201020
if err := r.Client.Get(ctx, key, latest); err != nil {
1021-
return err
1021+
return errors.WithStack(err)
10221022
}
10231023
// HACK: Disable optimistic locking. Technically, the correct way to do
10241024
// this is to set both objects' ResourceVersion to "". It's a waste of
@@ -1030,7 +1030,7 @@ func (r *RedpandaReconciler) patchRedpandaStatus(ctx context.Context, rp *redpan
10301030
func (r *RedpandaReconciler) apply(ctx context.Context, obj client.Object) error {
10311031
gvk, err := r.Client.GroupVersionKindFor(obj)
10321032
if err != nil {
1033-
return err
1033+
return errors.WithStack(err)
10341034
}
10351035

10361036
obj.SetManagedFields(nil)
@@ -1089,14 +1089,14 @@ func allListTypes(c client.Client) ([]client.ObjectList, error) {
10891089
for _, t := range redpanda.Types() {
10901090
gvk, err := c.GroupVersionKindFor(t)
10911091
if err != nil {
1092-
return nil, err
1092+
return nil, errors.WithStack(err)
10931093
}
10941094

10951095
gvk.Kind += "List"
10961096

10971097
list, err := c.Scheme().New(gvk)
10981098
if err != nil {
1099-
return nil, err
1099+
return nil, errors.WithStack(err)
11001100
}
11011101

11021102
types = append(types, list.(client.ObjectList))

0 commit comments

Comments
 (0)