Skip to content

Commit b5a7190

Browse files
Merge pull request #2691 from oracle/owls_95240
OWLS-95240 - Reconcile running servers after the domain configuration change and fix for NPE
2 parents f26d1ab + ec20ac8 commit b5a7190

File tree

3 files changed

+137
-50
lines changed

3 files changed

+137
-50
lines changed

operator/src/main/java/oracle/kubernetes/operator/steps/ManagedServersUpStep.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2017, 2021, Oracle and/or its affiliates.
1+
// Copyright (c) 2017, 2022, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.kubernetes.operator.steps;
@@ -15,6 +15,7 @@
1515
import java.util.stream.Collectors;
1616
import javax.annotation.Nonnull;
1717

18+
import io.kubernetes.client.openapi.models.V1Pod;
1819
import oracle.kubernetes.operator.MakeRightDomainOperation;
1920
import oracle.kubernetes.operator.ProcessingConstants;
2021
import oracle.kubernetes.operator.helpers.DomainPresenceInfo;
@@ -35,6 +36,7 @@
3536
import oracle.kubernetes.weblogic.domain.model.ServerSpec;
3637

3738
import static java.util.Comparator.comparing;
39+
import static oracle.kubernetes.operator.helpers.PodHelper.getPodServerName;
3840

3941
public class ManagedServersUpStep extends Step {
4042
static final String SERVERS_UP_MSG =
@@ -103,7 +105,7 @@ public NextAction apply(Packet packet) {
103105
LOGGER.fine(SERVERS_UP_MSG, factory.domain.getDomainUid(), getRunningServers(info));
104106
}
105107

106-
Optional.ofNullable(config).ifPresent(wlsDomainConfig -> addServersToFactory(factory, wlsDomainConfig));
108+
Optional.ofNullable(config).ifPresent(wlsDomainConfig -> addServersToFactory(factory, wlsDomainConfig, info));
107109

108110
info.setServerStartupInfo(factory.getStartupInfos());
109111
info.setServerShutdownInfo(factory.getShutdownInfos());
@@ -116,7 +118,8 @@ public NextAction apply(Packet packet) {
116118
packet);
117119
}
118120

119-
private void addServersToFactory(@Nonnull ServersUpStepFactory factory, @Nonnull WlsDomainConfig wlsDomainConfig) {
121+
private void addServersToFactory(@Nonnull ServersUpStepFactory factory, @Nonnull WlsDomainConfig wlsDomainConfig,
122+
DomainPresenceInfo info) {
120123
Set<String> clusteredServers = new HashSet<>();
121124

122125
List<ServerConfig> pendingServers = new ArrayList<>();
@@ -131,6 +134,15 @@ private void addServersToFactory(@Nonnull ServersUpStepFactory factory, @Nonnull
131134
for (ServerConfig serverConfig : pendingServers) {
132135
factory.addServerIfNeeded(serverConfig.wlsServerConfig, serverConfig.wlsClusterConfig);
133136
}
137+
138+
info.getServerPods().filter(pod -> !factory.getServers().contains(getPodServerName(pod)))
139+
.filter(pod -> !getPodServerName(pod).equals(wlsDomainConfig.getAdminServerName()))
140+
.forEach(pod -> shutdownServersNotPresentInDomainConfig(factory, pod));
141+
}
142+
143+
private void shutdownServersNotPresentInDomainConfig(ServersUpStepFactory factory, V1Pod pod) {
144+
WlsServerConfig serverConfig = new WlsServerConfig(getPodServerName(pod), PodHelper.getPodName(pod), 0);
145+
factory.addShutdownInfo(new ServerShutdownInfo(serverConfig, pod.getMetadata().getClusterName(), null, false));
134146
}
135147

136148
private void addClusteredServersToFactory(
@@ -242,6 +254,10 @@ Collection<DomainPresenceInfo.ServerShutdownInfo> getShutdownInfos() {
242254
return shutdownInfos;
243255
}
244256

257+
Collection<String> getServers() {
258+
return servers;
259+
}
260+
245261
private void addStartupInfo(ServerStartupInfo startupInfo) {
246262
if (startupInfos == null) {
247263
startupInfos = new ArrayList<>();

operator/src/main/java/oracle/kubernetes/operator/steps/ReadHealthStep.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) 2018, 2021, Oracle and/or its affiliates.
1+
// Copyright (c) 2018, 2022, Oracle and/or its affiliates.
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
33

44
package oracle.kubernetes.operator.steps;
@@ -87,7 +87,6 @@ public NextAction apply(Packet packet) {
8787
String serverName = (String) packet.get(ProcessingConstants.SERVER_NAME);
8888
DomainPresenceInfo info = packet.getSpi(DomainPresenceInfo.class);
8989
V1Service service = info.getServerService(serverName);
90-
9190
if (service == null) {
9291
return doNext(packet);
9392
} else {
@@ -191,6 +190,9 @@ static final class ReadHealthWithHttpStep extends Step {
191190
@Override
192191
public NextAction apply(Packet packet) {
193192
ReadHealthProcessing processing = new ReadHealthProcessing(packet, service, pod);
193+
if (processing.getWlsServerConfig() == null) {
194+
return doNext(packet);
195+
}
194196
return doNext(createRequestStep(processing.createRequest(), new RecordHealthStep(getNext())), packet);
195197
}
196198

0 commit comments

Comments
 (0)