Method Reconciler#reconcile is not triggered when resource is deleted.
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 55/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- java, kubernetes
- Bereich
- devops, infrastructure
Rechercherichtung
Reproduziere das Problem mit dem bereitgestellten MyResourceReconciler und der ControllerConfiguration und verfolge anschließend den Ereignisverarbeitungspfad bis zu Reconciler#reconcile für Löschereignisse. Erledigt ist die Aufgabe, wenn eine Löschung eine Reconciliation mit context.isPrimaryResourceDeleted() true auslöst, während das Verhalten bei Erstellung und Aktualisierung unverändert bleibt; füge Tests zur Abdeckung hinzu oder aktualisiere sie, falls die relevanten Tests zur Ereignisverarbeitung gefunden werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Bug Report
I wanted to create metric exporter for certain resource type.
For this I implemented Reconciler with triggerReconcilerOnAllEvents enabled (introducerd in JOSDK 5.2) to receive all events (create, update and delete).
Method Reconciler#reconcile is not triggered when resource is deleted.
What did you do?
@ControllerConfiguration(triggerReconcilerOnAllEvents = true, generationAwareEventProcessing = false)
public class MyResourceReconciler implements Reconciler<MyResource>{
private static final Logger LOG = Logger.getLogger(MyResourceReconciler.class);
@Override
public UpdateControl<MyResource> reconcile(MyResource resource, Context<MyResource> context) throws Exception {
LOG.infof("Resource %s/%s event", resource.getMetadata().getNamespace(), resource.getMetadata().getName());
if(context.isPrimaryResourceDeleted()){
LOG.infof("deleted");
return UpdateControl.noUpdate();
}
LOG.infof("created/updated");
return UpdateControl.noUpdate();
}
}
What did you expect to see?
When I create, update and delete resource I expected to see in logs:
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-92) Resource mynamespace/myresource event
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-92) created/updated
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-93) Resource mynamespace/myresource event
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-93) created/updated
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-93) Resource mynamespace/myresource event
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-93) deleted
What did you see instead? Under which circumstances?
When I create, update and delete resource I see in logs:
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-92) Resource mynamespace/myresource event
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-92) created/updated
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-93) Resource mynamespace/myresource event
INFO [com.test.MyResourceReconciler] (ReconcilerExecutor-myresourcereconciler-93) created/updated
Environment
Kubernetes cluster type:
OpenShift 4.19.43
$ Mention java-operator-sdk version from pom.xml file
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-bom</artifactId>
<version>3.39.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-operator-sdk-bom</artifactId>
<version>3.39.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>io.quarkiverse.operatorsdk</groupId>
<artifactId>quarkus-operator-sdk</artifactId>
</dependency>
resolves to: io.javaoperatorsdk:operator-framework-core:5.5.0
$ java -version
openjdk version "25.0.4.1" 2026-08-18 LTS
OpenJDK Runtime Environment Temurin-25.0.4.1+1 (build 25.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.4.1+1 (build 25.0.4.1+1-LTS, mixed mode, sharing)
$ kubectl version
Client Version: 4.19.0-202608112108.p2.gb2a93a6.assembly.stream.el9-b2a93a6
Kustomize Version: v5.5.0
Kubernetes Version: v1.32.13
Additional context
- resources does not have finalizers
- adding defaultFilters = false to ControllerConfiguration did not helped
- Vorherrschende Sprache
- Java
- Sterne
- 944
- Forks
- 242
- Ø Merge
- 1 T. 4 Std.
- Gemergte PRs (30 T.)
- 43
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus operator-framework/java-operator-sdk
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
operator-framework/java-operator-sdk#3617 · 1 Kommentar ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
operator-framework/java-operator-sdk#3615 · 1 Kommentar · 3 Reaktionen ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
operator-framework/java-operator-sdk#3568 · 1 Kommentar · 1 Reaktion ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
Alle Issues in operator-framework/java-operator-sdk
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
bug needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 94/100
objectionary/hone-maven-plugin#1061 ·
-
type:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100