diff --git a/app/src/main/java/run/halo/aifoundation/provider/AiProviderReconciler.java b/app/src/main/java/run/halo/aifoundation/provider/AiProviderReconciler.java index f3c00210..9ffad013 100644 --- a/app/src/main/java/run/halo/aifoundation/provider/AiProviderReconciler.java +++ b/app/src/main/java/run/halo/aifoundation/provider/AiProviderReconciler.java @@ -40,8 +40,9 @@ public Result reconcile(Request request) { } return; } - addFinalizers(provider.getMetadata(), Set.of(FINALIZER_NAME)); - client.update(provider); + if (addFinalizers(provider.getMetadata(), Set.of(FINALIZER_NAME))) { + client.update(provider); + } }); return Result.doNotRetry(); } diff --git a/app/src/test/java/run/halo/aifoundation/provider/AiProviderReconcilerTest.java b/app/src/test/java/run/halo/aifoundation/provider/AiProviderReconcilerTest.java index e0d49db6..878c19be 100644 --- a/app/src/test/java/run/halo/aifoundation/provider/AiProviderReconcilerTest.java +++ b/app/src/test/java/run/halo/aifoundation/provider/AiProviderReconcilerTest.java @@ -79,6 +79,20 @@ void reconcile_existingProvider_addsFinalizer() { .contains(AiProviderReconciler.FINALIZER_NAME); } + @Test + void reconcile_existingProviderWithFinalizer_doesNotUpdate() { + var provider = provider("openai-prod"); + provider.getMetadata().setFinalizers(Set.of(AiProviderReconciler.FINALIZER_NAME)); + + when(client.fetch(AiProvider.class, "openai-prod")).thenReturn(Optional.of(provider)); + + var result = reconciler.reconcile(new Reconciler.Request("openai-prod")); + + assertThat(result.reEnqueue()).isFalse(); + verify(client, never()).delete(any(AiModel.class)); + verify(client, never()).update(any()); + } + @Test void reconcile_providerNotFound_returnsDoNotRetry() { when(client.fetch(AiProvider.class, "missing")).thenReturn(Optional.empty());