Skip to content

Commit e31793c

Browse files
committed
fix: improve javadoc
Signed-off-by: Chris Laprun <claprun@redhat.com>
1 parent 7a1902b commit e31793c

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ConfigurationService.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -444,30 +444,35 @@ default Set<Class<? extends HasMetadata>> defaultNonSSAResource() {
444444
*
445445
* @return if special annotation should be used for dependent resource to filter events
446446
* @since 4.5.0
447-
* @return if special annotation should be used for dependent resource to filter events
448447
*/
449448
default boolean previousAnnotationForDependentResourcesEventFiltering() {
450449
return true;
451450
}
452451

453452
/**
454-
* For dependent resources framework can add an annotation to filter our events that are results
455-
* of changes made by the framework. There are, however, few resources that do not follow the K8S
456-
* API convention that changes in metadata do not increase the "metadata.generation". For these
457-
* resources, the generation is increased by adding the annotation and their controller increases
458-
* the observedGeneration in the status. This results in a new event, that if not handled
459-
* correctly with the resource matcher yet again results in an update and a previous version
460-
* annotation change, thus results in an infinite loop.
453+
* For dependent resources, the framework can add an annotation to filter out events resulting
454+
* directly from the framework's operation. There are, however, some resources that do not follow
455+
* the Kubernetes API conventions that changes in metadata should not increase the generation of
456+
* the resource (as recorded in the {@code generation} field of the resource's {@code metadata}).
457+
* For these resources, this convention is not respected and results in a new event for the
458+
* framework to process. If that particular case is not handled correctly in the resource matcher,
459+
* the framework will consider that the resource doesn't match the desired state and therefore
460+
* triggers an update, which in turn, will re-add the annotation, thus starting the loop again,
461+
* infinitely.
461462
*
462463
* <p>As a workaround, we automatically skip adding previous annotation for those well-known
463-
* resources. Note that if you are sure that the matcher works (most of the cases does) for your
464-
* case, you can remove the resource from the blocklist.
464+
* resources. Note that if you are sure that the matcher works for your use case, and it should in
465+
* most instances, you can remove the resource type from the blocklist.
466+
*
467+
* <p>The consequence of adding a resource type to the set is that the framework will not use
468+
* event filtering to prevent events, initiated by changes made by the framework itself as a
469+
* result of its processing of dependent resources, to trigger the associated reconciler again.
465470
*
466-
* <p>The consequence of adding a resource type to this list is that it will not use event
467-
* filtering in dependent resources, so will process also events which are results from updates of
468-
* the dependent.
471+
* <p>Note that this method only takes effect if annotating dependent resources to prevent
472+
* dependent resources events from triggering the associated reconciler again is activated as
473+
* controlled by {@link #previousAnnotationForDependentResourcesEventFiltering()}
469474
*
470-
* @return blocklist of resource classes where the previous version annotation won't be used.
475+
* @return a Set of resource classes where the previous version annotation won't be used.
471476
*/
472477
default Set<Class<? extends HasMetadata>> previousAnnotationUsageBlocklist() {
473478
return Set.of(Deployment.class, StatefulSet.class);

0 commit comments

Comments
 (0)