Skip to content

Commit 7eb3aa7

Browse files
committed
feature: log warning when passing a running event source
1 parent 9e13536 commit 7eb3aa7

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

Diff for: operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/InformerEventSource.java

+11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import java.util.Set;
66
import java.util.function.Function;
77

8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
811
import io.fabric8.kubernetes.api.model.HasMetadata;
912
import io.fabric8.kubernetes.client.KubernetesClient;
1013
import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
@@ -15,6 +18,8 @@
1518

1619
public class InformerEventSource<T extends HasMetadata> extends AbstractEventSource {
1720

21+
private static final Logger log = LoggerFactory.getLogger(InformerEventSource.class);
22+
1823
private final SharedInformer<T> sharedInformer;
1924
private final Function<T, Set<String>> resourceToUIDs;
2025
private final Function<HasMetadata, T> associatedWith;
@@ -41,6 +46,11 @@ public InformerEventSource(SharedInformer<T> sharedInformer,
4146
Function<T, Set<String>> resourceToUIDs,
4247
Function<HasMetadata, T> associatedWith,
4348
boolean skipUpdateEventPropagationIfNoChange) {
49+
if (sharedInformer.isRunning()) {
50+
log.warn(
51+
"Informer is already running on event source creation, this is not desirable and may " +
52+
"lead to non deterministic behavior.");
53+
}
4454
this.sharedInformer = sharedInformer;
4555
this.resourceToUIDs = resourceToUIDs;
4656
this.skipUpdateEventPropagationIfNoChange = skipUpdateEventPropagationIfNoChange;
@@ -81,6 +91,7 @@ private void propagateEvent(InformerEvent.Action action, T object, T oldObject)
8191
}
8292
uids.forEach(uid -> {
8393
InformerEvent event = new InformerEvent(uid, this, action, object, oldObject);
94+
// In case user passes an already running informer this would fail.
8495
if (this.eventHandler != null) {
8596
this.eventHandler.handleEvent(event);
8697
}

Diff for: sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/TomcatController.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void init(EventSourceManager eventSourceManager) {
4545
SharedIndexInformer<Deployment> deploymentInformer =
4646
kubernetesClient.apps().deployments().inAnyNamespace()
4747
.withLabel("app.kubernetes.io/managed-by", "tomcat-operator")
48-
.inform();
48+
.runnableInformer(0);
4949

5050
this.informerEventSource = new InformerEventSource<>(deploymentInformer, d -> {
5151
var ownerReferences = d.getMetadata().getOwnerReferences();

0 commit comments

Comments
 (0)