From a1e2b319a5e7d6135810c6aa5d94fa4f98020648 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 6 Jul 2023 09:40:09 +0200
Subject: [PATCH] OZG-3961 - manually re-reconcile on errors

---
 src/main/java/de/ozgcloud/operator/Config.java               | 1 +
 .../operator/keycloak/client/KeycloakClientReconciler.java   | 3 +--
 .../operator/keycloak/group/KeycloakGroupReconciler.java     | 3 +--
 .../operator/keycloak/realm/KeycloakRealmReconciler.java     | 5 +++--
 .../operator/keycloak/user/KeycloakUserReconciler.java       | 3 +--
 5 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/main/java/de/ozgcloud/operator/Config.java b/src/main/java/de/ozgcloud/operator/Config.java
index b0cdd1d..6cf75ae 100644
--- a/src/main/java/de/ozgcloud/operator/Config.java
+++ b/src/main/java/de/ozgcloud/operator/Config.java
@@ -12,6 +12,7 @@ import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
 public class Config {
 
 	public static final int RECONCILER_RETRY_SECONDS = 20;
+	public static final int RECONCILER_RETRY_SECONDS_ON_ERROR = 60;
 
 //	@Bean
 //	KeycloakUserReconciler customServiceController(KeycloakUserService keycloakUserService) {
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java
index f83e774..65dff6e 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/client/KeycloakClientReconciler.java
@@ -48,8 +48,7 @@ public class KeycloakClientReconciler implements Reconciler<OzgKeycloakClient> {
 							+ e.getMessage(),
 					e);
 			resource.setStatus(OzgKeycloakClientStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build());
-			UpdateControl.updateStatus(resource);
-			throw e;
+			return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS));
 		}
 	}
 
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java
index 437efde..66f05bf 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/group/KeycloakGroupReconciler.java
@@ -48,8 +48,7 @@ public class KeycloakGroupReconciler implements Reconciler<OzgKeycloakGroup> {
 							+ e.getMessage(),
 					e);
 			resource.setStatus(OzgKeycloakGroupStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build());
-			UpdateControl.updateStatus(resource);
-			throw e;
+			return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS));
 		}
 	}
 
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
index 1675062..ebddb29 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java
@@ -1,10 +1,12 @@
 package de.ozgcloud.operator.keycloak.realm;
 
+import java.time.Duration;
 import java.util.logging.Level;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import de.ozgcloud.operator.Config;
 import de.ozgcloud.operator.keycloak.OzgCustomResourceStatus;
 import io.javaoperatorsdk.operator.api.reconciler.Cleaner;
 import io.javaoperatorsdk.operator.api.reconciler.Context;
@@ -41,8 +43,7 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cl
 							+ e.getMessage(),
 					e);
 			resource.setStatus(OzgKeycloakRealmStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build());
-			UpdateControl.updateStatus(resource);
-			throw e;
+			return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS));
 		}
 	}
 
diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
index d1eae89..c08951b 100644
--- a/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
+++ b/src/main/java/de/ozgcloud/operator/keycloak/user/KeycloakUserReconciler.java
@@ -50,8 +50,7 @@ public class KeycloakUserReconciler implements Reconciler<OzgKeycloakUser>, Clea
 							+ e.getMessage(),
 					e);
 			resource.setStatus(OzgKeycloakUserStatus.builder().status(OzgCustomResourceStatus.ERROR).message(e.getMessage()).build());
-			UpdateControl.updateStatus(resource);
-			throw e;
+			return UpdateControl.updateStatus(resource).rescheduleAfter(Duration.ofSeconds(Config.RECONCILER_RETRY_SECONDS));
 		}
 	}
 
-- 
GitLab