@@ -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