Skip to content

Commit f78ab7f

Browse files
csvirimetacosm
andauthored
feat: add config option for informerListLimit (#669)
Co-authored-by: Chris Laprun <[email protected]>
1 parent 73228c1 commit f78ab7f

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

core/deployment/src/main/java/io/quarkiverse/operatorsdk/deployment/QuarkusControllerConfigurationBuildStep.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ static QuarkusControllerConfiguration createConfiguration(
167167
Class<?> retryConfigurationClass = null;
168168
Class<? extends RateLimiter> rateLimiterClass = DefaultRateLimiter.class;
169169
Class<?> rateLimiterConfigurationClass = null;
170+
Long nullableInformerListLimit = null;
170171
if (controllerAnnotation != null) {
171172
final var intervalFromAnnotation = ConfigurationUtils.annotationValueOrDefault(
172173
controllerAnnotation, "maxReconciliationInterval", AnnotationValue::asNested,
@@ -202,6 +203,9 @@ static QuarkusControllerConfiguration createConfiguration(
202203
final var rateLimiterConfigurableInfo = configurableInfos.get(rateLimiterClass.getName());
203204
rateLimiterConfigurationClass = getConfigurationAnnotationClass(reconcilerInfo,
204205
rateLimiterConfigurableInfo);
206+
nullableInformerListLimit = ConfigurationUtils.annotationValueOrDefault(
207+
controllerAnnotation, "informerListLimit", AnnotationValue::asLong,
208+
() -> null);
205209
}
206210

207211
// extract the namespaces
@@ -249,6 +253,7 @@ static QuarkusControllerConfiguration createConfiguration(
249253
primaryAsResource.version(),
250254
configExtractor.generationAware(),
251255
resourceClass,
256+
nullableInformerListLimit,
252257
namespaces,
253258
wereNamespacesSet,
254259
getFinalizer(controllerAnnotation, resourceFullName),

core/runtime/src/main/java/io/quarkiverse/operatorsdk/runtime/QuarkusControllerConfiguration.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public DefaultRateLimiter(Duration refreshPeriod, int limitForPeriod) {
6666
private final boolean generationAware;
6767
private final boolean statusPresentAndNotVoid;
6868
private final Class<R> resourceClass;
69+
private final Optional<Long> informerListLimit;
6970
private final ResourceEventFilter<R> eventFilter;
7071
private final Optional<Duration> maxReconciliationInterval;
7172
private final Optional<OnAddFilter<? super R>> onAddFilter;
@@ -93,7 +94,9 @@ public QuarkusControllerConfiguration(
9394
String name,
9495
String resourceTypeName,
9596
String crVersion, boolean generationAware,
96-
Class resourceClass, Set<String> namespaces,
97+
Class resourceClass,
98+
Long nullableInformerListLimit,
99+
Set<String> namespaces,
97100
boolean wereNamespacesSet,
98101
String finalizerName, String labelSelector,
99102
boolean statusPresentAndNotVoid, ResourceEventFilter eventFilter,
@@ -109,6 +112,7 @@ public QuarkusControllerConfiguration(
109112
this.crVersion = crVersion;
110113
this.generationAware = generationAware;
111114
this.resourceClass = resourceClass;
115+
this.informerListLimit = Optional.ofNullable(nullableInformerListLimit);
112116
this.dependentsMetadata = dependentsMetadata;
113117
this.workflow = workflow;
114118
this.retryConfiguration = ControllerConfiguration.super.getRetryConfiguration();
@@ -148,6 +152,17 @@ public Class<R> getResourceClass() {
148152
return resourceClass;
149153
}
150154

155+
@Override
156+
public Optional<Long> getInformerListLimit() {
157+
return informerListLimit;
158+
}
159+
160+
@SuppressWarnings("unused")
161+
// this is needed by Quarkus for the RecordableConstructor
162+
public Long getNullableInformerListLimit() {
163+
return informerListLimit.orElse(null);
164+
}
165+
151166
@Override
152167
public String getName() {
153168
return name;

0 commit comments

Comments
 (0)