Skip to content

Commit 2b277a7

Browse files
authored
keep namespaces processed in batches (#2189)
1 parent f8b31e2 commit 2b277a7

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

operator/src/main/java/oracle/kubernetes/operator/DomainRecheck.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ Step readExistingNamespaces() {
132132
}
133133

134134
private class NamespaceListResponseStep extends DefaultResponseStep<V1NamespaceList> {
135+
Step current = getNext();
135136

136137
private NamespaceListResponseStep() {
137138
super(new Namespaces.NamespaceListAfterStep(domainNamespaces));
@@ -168,8 +169,9 @@ private Step createNextSteps(Set<String> namespacesToStartNow) {
168169
RunInParallel.perNamespace(namespacesToStartNow, DomainRecheck.this::createNamespaceReview));
169170
}
170171
}
171-
nextSteps.add(getNext());
172-
return Step.chain(nextSteps.toArray(new Step[0]));
172+
nextSteps.add(current);
173+
current = Step.chain(nextSteps.toArray(new Step[0]));
174+
return current;
173175
}
174176

175177
private Set<String> getNamespacesToStart(List<String> namespaceNames) {

operator/src/test/java/oracle/kubernetes/operator/MainTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,10 @@ private List<String> getStartingNamespaces() {
337337
return Arrays.stream(NAMESPACES).filter(domainNamespaces::isStarting).collect(Collectors.toList());
338338
}
339339

340+
private List<String> getStartingNamespaces(String...namespaces) {
341+
return Arrays.stream(namespaces).filter(domainNamespaces::isStarting).collect(Collectors.toList());
342+
}
343+
340344
@NotNull
341345
DomainRecheck createDomainRecheck() {
342346
return new DomainRecheck(delegate);
@@ -427,6 +431,35 @@ private void defineSelectionStrategy(SelectionStrategy selectionStrategy) {
427431
TuningParameters.getInstance().put(Namespaces.SELECTION_STRATEGY_KEY, selectionStrategy.toString());
428432
}
429433

434+
@Test
435+
public void whenNamespacesListedInMultipleChunks_allNamespacesStarted() {
436+
loggerControl.withLogLevel(Level.WARNING).collectLogMessages(logRecords, MessageKeys.NAMESPACE_IS_MISSING);
437+
438+
defineSelectionStrategy(SelectionStrategy.List);
439+
String namespaceString = "NS1,NS" + MULTICHUNK_LAST_NAMESPACE_NUM;
440+
HelmAccessStub.defineVariable(HelmAccess.OPERATOR_DOMAIN_NAMESPACES, namespaceString);
441+
createNamespaces(MULTICHUNK_LAST_NAMESPACE_NUM);
442+
443+
testSupport.runSteps(createDomainRecheck().readExistingNamespaces());
444+
445+
assertThat(getStartingNamespaces("NS1", "NS" + MULTICHUNK_LAST_NAMESPACE_NUM),
446+
contains("NS1", "NS" + MULTICHUNK_LAST_NAMESPACE_NUM));
447+
}
448+
449+
@Test
450+
public void whenNamespacesListedInMoreThanTwoChunks_allNamespacesStarted() {
451+
loggerControl.withLogLevel(Level.WARNING).collectLogMessages(logRecords, MessageKeys.NAMESPACE_IS_MISSING);
452+
int lastNSNumber = DEFAULT_CALL_LIMIT * 3 + 1;
453+
defineSelectionStrategy(SelectionStrategy.List);
454+
String namespaceString = "NS1,NS" + lastNSNumber;
455+
HelmAccessStub.defineVariable(HelmAccess.OPERATOR_DOMAIN_NAMESPACES, namespaceString);
456+
createNamespaces(lastNSNumber);
457+
458+
testSupport.runSteps(createDomainRecheck().readExistingNamespaces());
459+
460+
assertThat(getStartingNamespaces("NS1", "NS" + lastNSNumber), contains("NS1", "NS" + lastNSNumber));
461+
}
462+
430463
@Test
431464
public void whenNamespacesListedInMultipleChunks_dontDeclarePresentNamespacesAsMissing() {
432465
loggerControl.withLogLevel(Level.WARNING).collectLogMessages(logRecords, MessageKeys.NAMESPACE_IS_MISSING);

0 commit comments

Comments
 (0)