Skip to content

Commit 12c5bf6

Browse files
authored
owls-104622 domain status cluster condition Complete type is always True when the cluster replicas changed to 0 (#3754)
* Cluster Completed condition should be False until servers are shut down * re-enable domain status condition check * calls createClusterResourceStatusUpdaterStep when doamin stautus update succeeded
1 parent 4e73dc0 commit 12c5bf6

File tree

3 files changed

+48
-7
lines changed

3 files changed

+48
-7
lines changed

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItRetryImprovementMisc.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,10 +342,9 @@ void testClusterReplicasToZero() {
342342
checkDomainStatusConditionTypeHasExpectedStatus(shortRetryPolicy, domainUid, domainNamespace,
343343
DOMAIN_STATUS_CONDITION_COMPLETED_TYPE, "False", DOMAIN_VERSION);
344344

345-
// Enable this check when the bug is fixed
346345
// check the cluster status condition Complete becomes false
347-
//checkDomainStatusClusterConditionTypeHasExpectedStatus(shortRetryPolicy, domainUid, domainNamespace,
348-
// clusterName, DOMAIN_STATUS_CONDITION_COMPLETED_TYPE, "False", DOMAIN_VERSION);
346+
checkDomainStatusClusterConditionTypeHasExpectedStatus(shortRetryPolicy, domainUid, domainNamespace,
347+
clusterName, DOMAIN_STATUS_CONDITION_COMPLETED_TYPE, "False", DOMAIN_VERSION);
349348

350349
// verify Cluster status condition Available becomes false and stay false when the server pod is deleting
351350
checkDomainStatusClusterConditionTypeHasExpectedStatus(withQuickRetryPolicy, domainUid, domainNamespace,

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public interface StepWithRetryCount {
135135
* @return the new step
136136
*/
137137
public static Step createStatusUpdateStep(Step next) {
138-
return new StatusUpdateStep(createClusterResourceStatusUpdaterStep(next));
138+
return new StatusUpdateStep(next);
139139
}
140140

141141

@@ -360,7 +360,7 @@ public NextAction onSuccess(Packet packet, CallResponse<DomainResource> callResp
360360
if (callResponse.getResult() != null) {
361361
packet.getSpi(DomainPresenceInfo.class).setDomain(callResponse.getResult());
362362
}
363-
return doNext(packet);
363+
return doNext(createClusterResourceStatusUpdaterStep(getNext()), packet);
364364
}
365365

366366
@Override
@@ -936,9 +936,15 @@ boolean hasTooManyReplicas() {
936936
}
937937

938938
private boolean allIntendedClusterServersReady() {
939-
return isClusterIntentionallyShutDown() || (allStartedClusterServersAreComplete()
939+
return isClusterIntentionallyShutDown()
940+
? allNonStartedClusterServersAreShutdown()
941+
: isClusterStartupCompleted();
942+
}
943+
944+
private boolean isClusterStartupCompleted() {
945+
return allStartedClusterServersAreComplete()
940946
&& allNonStartedClusterServersAreShutdown()
941-
&& clusteredServersMarkedForRoll().isEmpty());
947+
&& clusteredServersMarkedForRoll().isEmpty();
942948
}
943949

944950
private boolean allStartedClusterServersAreComplete() {

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1136,6 +1136,42 @@ void whenClusterIsIntentionallyShutdown_establishClusterCompletedConditionTrue()
11361136
assertThat(completedCondition.getStatus(), equalTo(TRUE));
11371137
}
11381138

1139+
@Test
1140+
void whenClusterIsIntentionallyShutdown_serverShuttingDown_establishClusterCompletedConditionFalse() {
1141+
configureDomain().configureCluster(info, "cluster1").withReplicas(0).withMaxUnavailable(1);
1142+
defineScenario().withDynamicCluster("cluster1", 0, 1)
1143+
.notStarting("ms1")
1144+
.withServersReachingState(SHUTTING_DOWN_STATE, "ms1")
1145+
.build();
1146+
info.getReferencedClusters().forEach(testSupport::defineResources);
1147+
1148+
updateDomainStatus();
1149+
1150+
ClusterStatus clusterStatus = getClusterStatus();
1151+
assertThat(clusterStatus.getConditions().size(), equalTo(2));
1152+
ClusterCondition completedCondition = clusterStatus.getConditions().get(1);
1153+
assertThat(completedCondition.getType(), equalTo(ClusterConditionType.COMPLETED));
1154+
assertThat(completedCondition.getStatus(), equalTo(FALSE));
1155+
}
1156+
1157+
@Test
1158+
void whenClusterIsIntentionallyShutdown_serverShutDown_establishClusterCompletedConditionTrue() {
1159+
configureDomain().configureCluster(info, "cluster1").withReplicas(0).withMaxUnavailable(1);
1160+
defineScenario().withDynamicCluster("cluster1", 0, 1)
1161+
.notStarting("ms1")
1162+
.withServersReachingState(SHUTDOWN_STATE, "ms1")
1163+
.build();
1164+
info.getReferencedClusters().forEach(testSupport::defineResources);
1165+
1166+
updateDomainStatus();
1167+
1168+
ClusterStatus clusterStatus = getClusterStatus();
1169+
assertThat(clusterStatus.getConditions().size(), equalTo(2));
1170+
ClusterCondition completedCondition = clusterStatus.getConditions().get(1);
1171+
assertThat(completedCondition.getType(), equalTo(ClusterConditionType.COMPLETED));
1172+
assertThat(completedCondition.getStatus(), equalTo(TRUE));
1173+
}
1174+
11391175
@Test
11401176
void whenClusterHasTooManyReplicas_establishClusterCompletedConditionFalse() {
11411177
configureDomain().configureCluster(info, "cluster1").withReplicas(20).withMaxUnavailable(1);

0 commit comments

Comments
 (0)