Skip to content

Commit 3115dd4

Browse files
committed
Correct watch updates
1 parent c948a5c commit 3115dd4

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

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

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,7 @@ public void dispatchPodWatch(Watch.Response<V1Pod> item) {
9090
DomainPresenceInfo existing = getExisting(metadata.getNamespace(), domainUID);
9191
if (existing != null) {
9292
ServerKubernetesObjects sko =
93-
existing
94-
.getServers()
95-
.computeIfAbsent(metadata.getName(), k -> new ServerKubernetesObjects());
93+
existing.getServers().computeIfAbsent(serverName, k -> new ServerKubernetesObjects());
9694
if (sko != null) {
9795
switch (item.type) {
9896
case "ADDED":
@@ -189,7 +187,7 @@ public void dispatchServiceWatch(Watch.Response<V1Service> item) {
189187
ServerKubernetesObjects sko =
190188
existing
191189
.getServers()
192-
.computeIfAbsent(metadata.getName(), k -> new ServerKubernetesObjects());
190+
.computeIfAbsent(serverName, k -> new ServerKubernetesObjects());
193191
if (channelName != null) {
194192
sko.getChannels()
195193
.compute(
@@ -235,7 +233,7 @@ public void dispatchServiceWatch(Watch.Response<V1Service> item) {
235233
ServerKubernetesObjects sko =
236234
existing
237235
.getServers()
238-
.computeIfAbsent(metadata.getName(), k -> new ServerKubernetesObjects());
236+
.computeIfAbsent(serverName, k -> new ServerKubernetesObjects());
239237
if (channelName != null) {
240238
sko.getChannels()
241239
.compute(
@@ -282,7 +280,7 @@ public void dispatchServiceWatch(Watch.Response<V1Service> item) {
282280
makeRightDomainPresence(existing, true, false, true);
283281
}
284282
} else if (serverName != null) {
285-
ServerKubernetesObjects sko = existing.getServers().get(metadata.getName());
283+
ServerKubernetesObjects sko = existing.getServers().get(serverName);
286284
if (sko != null) {
287285
if (channelName != null) {
288286
boolean removed =
@@ -456,11 +454,15 @@ private static void onEvent(V1Event event) {
456454
ConcurrentMap<String, DomainPresenceInfo> map = domains.get(ns);
457455
if (map != null) {
458456
for (DomainPresenceInfo d : map.values()) {
459-
ServerKubernetesObjects sko = d.getServers().get(name);
460-
if (sko != null) {
461-
int idx = message.lastIndexOf(':');
462-
sko.getLastKnownStatus().set(message.substring(idx + 1).trim());
463-
break;
457+
String domainUIDPlusDash = d.getDomainUID() + "-";
458+
if (name.startsWith(domainUIDPlusDash)) {
459+
String serverName = name.substring(domainUIDPlusDash.length());
460+
ServerKubernetesObjects sko = d.getServers().get(serverName);
461+
if (sko != null) {
462+
int idx = message.lastIndexOf(':');
463+
sko.getLastKnownStatus().set(message.substring(idx + 1).trim());
464+
break;
465+
}
464466
}
465467
}
466468
}
@@ -632,29 +634,29 @@ public void makeRightDomainPresence(
632634
boolean explicitRecheck,
633635
boolean isDeleting,
634636
boolean isWillInterrupt) {
637+
Domain domain = info.getDomain();
635638
DomainSpec spec = null;
636-
String ns = info.getNamespace();
637-
String domainUID = info.getDomainUID();
638-
Domain dom = info.getDomain();
639-
if (dom != null) {
640-
spec = dom.getSpec();
639+
if (domain != null) {
640+
spec = domain.getSpec();
641641
DomainPresenceControl.normalizeDomainSpec(spec);
642642
}
643+
String ns = info.getNamespace();
644+
String domainUID = info.getDomainUID();
643645

644646
if (!Main.isNamespaceStopping(ns).get()) {
645647
DomainPresenceInfo existing = getExisting(ns, domainUID);
646648
if (existing != null) {
647649
Domain current = existing.getDomain();
648650
if (current != null) {
649651
// Is this an outdated watch event?
650-
if (isOutdated(current.getMetadata(), dom.getMetadata())) {
652+
if (domain != null && isOutdated(current.getMetadata(), domain.getMetadata())) {
651653
LOGGER.fine(MessageKeys.NOT_STARTING_DOMAINUID_THREAD, domainUID);
652654
return;
653655
}
654656
// Has the spec actually changed? We will get watch events for status updates
655657
if (!explicitRecheck && spec != null && spec.equals(current.getSpec())) {
656658
// nothing in the spec has changed, but status likely did; update current
657-
existing.setDomain(dom);
659+
existing.setDomain(domain);
658660
LOGGER.fine(MessageKeys.NOT_STARTING_DOMAINUID_THREAD, domainUID);
659661
return;
660662
}

0 commit comments

Comments
 (0)