From 84a2f0d68e5efdcdfde1b73566d7a55a6b4f498d Mon Sep 17 00:00:00 2001 From: Nikola Jokic Date: Fri, 8 Aug 2025 12:40:14 +0200 Subject: [PATCH 1/2] Log and wait if the creation event is not yet sourced --- .../actions.github.com/ephemeralrunner_controller.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/controllers/actions.github.com/ephemeralrunner_controller.go b/controllers/actions.github.com/ephemeralrunner_controller.go index 0590627f86..77718cb25e 100644 --- a/controllers/actions.github.com/ephemeralrunner_controller.go +++ b/controllers/actions.github.com/ephemeralrunner_controller.go @@ -193,6 +193,10 @@ func (r *EphemeralRunnerReconciler) Reconcile(ctx context.Context, req ctrl.Requ // create secret if not created log.Info("Creating new ephemeral runner secret for jitconfig.") if err := r.createSecret(ctx, ephemeralRunner, jitConfig, log); err != nil { + if kerrors.IsAlreadyExists(err) { + log.Info("Secret already exists. Requeing after 1 second to wait for the event") + return ctrl.Result{Requeue: true, RequeueAfter: 1 * time.Second}, nil + } return ctrl.Result{}, fmt.Errorf("failed to create secret: %w", err) } log.Info("Created new ephemeral runner secret for jitconfig.") @@ -268,13 +272,15 @@ func (r *EphemeralRunnerReconciler) Reconcile(ctx context.Context, req ctrl.Requ log.Error(err, "Failed to fetch the pod") return ctrl.Result{}, err } + log.Info("Ephemeral runner pod does not exist. Creating new ephemeral runner") - // Pod was not found. Create if the pod has never been created - log.Info("Creating new EphemeralRunner pod.") result, err := r.createPod(ctx, ephemeralRunner, secret, log) switch { case err == nil: return result, nil + case kerrors.IsAlreadyExists(err): + log.Info("Runner pod already exists. Waiting for the pod event to be received") + return ctrl.Result{}, nil case kerrors.IsInvalid(err) || kerrors.IsForbidden(err): log.Error(err, "Failed to create a pod due to unrecoverable failure") errMessage := fmt.Sprintf("Failed to create the pod: %v", err) From a65963d7523122298626f756e7a4973a304b6773 Mon Sep 17 00:00:00 2001 From: Nikola Jokic Date: Fri, 8 Aug 2025 12:46:01 +0200 Subject: [PATCH 2/2] remove it from the secret and add 5s delay --- .../actions.github.com/ephemeralrunner_controller.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/controllers/actions.github.com/ephemeralrunner_controller.go b/controllers/actions.github.com/ephemeralrunner_controller.go index 77718cb25e..39f3a16efb 100644 --- a/controllers/actions.github.com/ephemeralrunner_controller.go +++ b/controllers/actions.github.com/ephemeralrunner_controller.go @@ -193,10 +193,6 @@ func (r *EphemeralRunnerReconciler) Reconcile(ctx context.Context, req ctrl.Requ // create secret if not created log.Info("Creating new ephemeral runner secret for jitconfig.") if err := r.createSecret(ctx, ephemeralRunner, jitConfig, log); err != nil { - if kerrors.IsAlreadyExists(err) { - log.Info("Secret already exists. Requeing after 1 second to wait for the event") - return ctrl.Result{Requeue: true, RequeueAfter: 1 * time.Second}, nil - } return ctrl.Result{}, fmt.Errorf("failed to create secret: %w", err) } log.Info("Created new ephemeral runner secret for jitconfig.") @@ -280,7 +276,7 @@ func (r *EphemeralRunnerReconciler) Reconcile(ctx context.Context, req ctrl.Requ return result, nil case kerrors.IsAlreadyExists(err): log.Info("Runner pod already exists. Waiting for the pod event to be received") - return ctrl.Result{}, nil + return ctrl.Result{Requeue: true, RequeueAfter: 5 * time.Second}, nil case kerrors.IsInvalid(err) || kerrors.IsForbidden(err): log.Error(err, "Failed to create a pod due to unrecoverable failure") errMessage := fmt.Sprintf("Failed to create the pod: %v", err)