Closed
Description
I'm updating to version 5. I ran an existing test that creates many custom resources which need to be reconciled and noticed that I would occasionally see these errors in the logs.
2025-02-21 12:11:43,724 ERROR [io.fab.kub.cli.inf.imp.cac.SharedProcessor] (-1324526451-pool-1-thread-3) v1/configmaps failed invoking InformerEventSource{resourceClass: ConfigMap} event handler: null: java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:233)
at io.quarkus.vertx.mdc.provider.LateBoundMDCProvider.putLocal(LateBoundMDCProvider.java:147)
at io.quarkus.vertx.mdc.provider.LateBoundMDCProvider.put(LateBoundMDCProvider.java:63)
at org.jboss.logmanager.MDC.put(MDC.java:90)
at org.slf4j.impl.Slf4jMDCAdapter.put(Slf4jMDCAdapter.java:32)
at org.slf4j.MDC.put(MDC.java:123)
at io.javaoperatorsdk.operator.processing.MDCUtils.addResourceInfo(MDCUtils.java:36)
at java.base/java.util.Optional.ifPresent(Optional.java:178)
at io.javaoperatorsdk.operator.processing.event.EventProcessor.submitReconciliationExecution(EventProcessor.java:128)
at io.javaoperatorsdk.operator.processing.event.EventProcessor.handleMarkedEventForResource(EventProcessor.java:119)
at io.javaoperatorsdk.operator.processing.event.EventProcessor.handleEvent(EventProcessor.java:109)
at io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource.lambda$propagateEvent$4(InformerEventSource.java:230)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource.propagateEvent(InformerEventSource.java:220)
at io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource.onAddOrUpdate(InformerEventSource.java:175)
at io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource.onUpdate(InformerEventSource.java:140)
at io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource.onUpdate(InformerEventSource.java:68)
at io.fabric8.kubernetes.client.informers.impl.cache.ProcessorListener$UpdateNotification.handle(ProcessorListener.java:96)
at io.fabric8.kubernetes.client.informers.impl.cache.ProcessorListener.add(ProcessorListener.java:50)
at io.fabric8.kubernetes.client.informers.impl.cache.SharedProcessor.lambda$distribute$0(SharedProcessor.java:92)
at io.fabric8.kubernetes.client.informers.impl.cache.SharedProcessor.lambda$distribute$1(SharedProcessor.java:115)
at io.fabric8.kubernetes.client.utils.internal.SerialExecutor.lambda$execute$0(SerialExecutor.java:57)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
I verified this behavior with both 5.0.1 and 5.0.2. I believe is this caused by a data race between the two points below.
Write originalResource.getMetadata().setResourceVersion(null)
:
Read resource.getMetadata().getResourceVersion()
:
Metadata
Metadata
Assignees
Labels
No labels