2020import java .util .Set ;
2121import java .util .concurrent .atomic .AtomicInteger ;
2222
23+ import org .slf4j .Logger ;
24+ import org .slf4j .LoggerFactory ;
25+
2326import io .fabric8 .kubernetes .api .model .ConfigMap ;
2427import io .javaoperatorsdk .operator .api .config .informer .InformerEventSourceConfiguration ;
2528import io .javaoperatorsdk .operator .api .reconciler .Context ;
2629import io .javaoperatorsdk .operator .api .reconciler .ControllerConfiguration ;
2730import io .javaoperatorsdk .operator .api .reconciler .ErrorStatusUpdateControl ;
2831import io .javaoperatorsdk .operator .api .reconciler .EventSourceContext ;
2932import io .javaoperatorsdk .operator .api .reconciler .Reconciler ;
33+ import io .javaoperatorsdk .operator .api .reconciler .ResourceOperations ;
3034import io .javaoperatorsdk .operator .api .reconciler .UpdateControl ;
3135import io .javaoperatorsdk .operator .processing .event .ResourceID ;
3236import io .javaoperatorsdk .operator .processing .event .source .EventSource ;
3539@ ControllerConfiguration
3640public class LatestDistinctTestReconciler implements Reconciler <LatestDistinctTestResource > {
3741
42+ private static final Logger log = LoggerFactory .getLogger (LatestDistinctTestReconciler .class );
43+
3844 public static final String EVENT_SOURCE_1_NAME = "configmap-es-1" ;
3945 public static final String EVENT_SOURCE_2_NAME = "configmap-es-2" ;
4046 public static final String LABEL_KEY = "configmap-type" ;
@@ -53,6 +59,7 @@ public UpdateControl<LatestDistinctTestResource> reconcile(
5359 }
5460 var allConfigMaps = context .getSecondaryResourcesAsStream (ConfigMap .class ).toList ();
5561 if (allConfigMaps .size () < 2 ) {
62+ log .info ("Skipping reconciliation, only {} config map in cache" , allConfigMaps .size ());
5663 // wait until both informers see the config map
5764 return UpdateControl .noUpdate ();
5865 }
@@ -66,7 +73,10 @@ public UpdateControl<LatestDistinctTestResource> reconcile(
6673 resource .getStatus ().setConfigMapCount (distinctConfigMaps .size ());
6774 var configMap = distinctConfigMaps .get (0 );
6875 configMap .setData (Map .of (KEY_2 , "val2" ));
69- var updated = context .resourceOperations ().update (configMap );
76+ var updated =
77+ context
78+ .resourceOperations ()
79+ .update (configMap , ResourceOperations .Options .filterWithOptimisticLocking ());
7080
7181 // makes sure that distinct config maps returned
7282 distinctConfigMaps = context .getSecondaryResourcesAsStream (ConfigMap .class , true ).toList ();
0 commit comments