Skip to content

Commit 5434fd3

Browse files
author
leonsteinhaeuser
committed
feat: implemented secret sync backoff handling
1 parent cabe7e5 commit 5434fd3

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

internal/controller/passboltsecret_controller.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@ func (r *PassboltSecretReconciler) Reconcile(ctx context.Context, req ctrl.Reque
8383
}
8484
return errResult, err
8585
}
86+
87+
if secret.Status.FailureCount >= 3 {
88+
// if the secret failed to sync more than 3 times, we stop trying
89+
logr.Info("secret failed to sync more than 3 times. stopping sync", "name", secret.GetName(), "namespace", secret.GetNamespace())
90+
return ctrl.Result{}, nil
91+
}
92+
8693
// cleanup status
8794
secret.Status.SyncErrors = []passboltv1.SyncError{}
8895

@@ -94,6 +101,7 @@ func (r *PassboltSecretReconciler) Reconcile(ctx context.Context, req ctrl.Reque
94101
if secret.Spec.SecretType != corev1.SecretTypeOpaque && secret.Spec.SecretType != corev1.SecretTypeDockerConfigJson {
95102
logr.Info("unsupported secret type", "type", secret.Spec.SecretType)
96103
secret.Status.SyncStatus = passboltv1.SyncStatusError
104+
secret.Status.FailureCount++
97105
secret.Status.SyncErrors = append(secret.Status.SyncErrors, passboltv1.SyncError{
98106
Message: fmt.Sprintf("unsupported secret type %q", secret.Spec.SecretType),
99107
Time: metav1.Now(),
@@ -120,6 +128,7 @@ func (r *PassboltSecretReconciler) Reconcile(ctx context.Context, req ctrl.Reque
120128
if err != nil {
121129
if snErr, ok := err.(passboltv1.SyncError); ok {
122130
secret.Status.SyncStatus = passboltv1.SyncStatusError
131+
secret.Status.FailureCount++
123132
secret.Status.SyncErrors = append(secret.Status.SyncErrors, snErr)
124133
if err := r.Client.Status().Update(ctx, secret); err != nil {
125134
return errResult, err

0 commit comments

Comments
 (0)