diff --git a/src/main/java/io/cryostat/discovery/ContainerDiscovery.java b/src/main/java/io/cryostat/discovery/ContainerDiscovery.java index 1c5b417f6..14a187798 100644 --- a/src/main/java/io/cryostat/discovery/ContainerDiscovery.java +++ b/src/main/java/io/cryostat/discovery/ContainerDiscovery.java @@ -177,7 +177,7 @@ void onStart(@Observes StartupEvent evt) { universe.persist(); } - logger.info(String.format("Starting %s client", getRealm())); + logger.infov("Starting {0} client", getRealm()); queryContainers(); this.timerId = vertx.setPeriodic(pollPeriod.toMillis(), unused -> queryContainers()); @@ -187,7 +187,7 @@ void onStop(@Observes ShutdownEvent evt) { if (!enabled()) { return; } - logger.info(String.format("Shutting down %s client", getRealm())); + logger.infov("Shutting down {0} client", getRealm()); vertx.cancelTimer(timerId); } @@ -399,6 +399,7 @@ public void handleContainerEvent(ContainerSpec desc, EventKind evtKind) { } else { realm.children.remove(t.discoveryNode); } + t.discoveryNode.parent = null; realm.persist(); t.delete(); } diff --git a/src/main/java/io/cryostat/discovery/CustomDiscovery.java b/src/main/java/io/cryostat/discovery/CustomDiscovery.java index e626c2996..c7cc141f5 100644 --- a/src/main/java/io/cryostat/discovery/CustomDiscovery.java +++ b/src/main/java/io/cryostat/discovery/CustomDiscovery.java @@ -209,6 +209,7 @@ public Response delete(@RestPath long id) throws URISyntaxException { Target target = Target.find("id", id).singleResult(); DiscoveryNode realm = DiscoveryNode.getRealm(REALM).orElseThrow(); realm.children.remove(target.discoveryNode); + target.discoveryNode = null; realm.persist(); target.delete(); return Response.noContent().build(); diff --git a/src/main/java/io/cryostat/discovery/JDPDiscovery.java b/src/main/java/io/cryostat/discovery/JDPDiscovery.java index 45edbe89e..4f057d959 100644 --- a/src/main/java/io/cryostat/discovery/JDPDiscovery.java +++ b/src/main/java/io/cryostat/discovery/JDPDiscovery.java @@ -152,6 +152,7 @@ public synchronized void handleJdpEvent(JvmDiscoveryEvent evt) { case LOST: Target t = Target.getTargetByConnectUrl(connectUrl); realm.children.remove(t.discoveryNode); + t.discoveryNode.parent = null; realm.persist(); t.delete(); break; diff --git a/src/main/java/io/cryostat/discovery/KubeApiDiscovery.java b/src/main/java/io/cryostat/discovery/KubeApiDiscovery.java index 2941bbbbf..318a9b1cc 100644 --- a/src/main/java/io/cryostat/discovery/KubeApiDiscovery.java +++ b/src/main/java/io/cryostat/discovery/KubeApiDiscovery.java @@ -245,6 +245,7 @@ public void handleEndpointEvent(String namespace) { if (!nsNode.hasChildren()) { realm.children.remove(nsNode); + nsNode.parent = null; } else if (!realm.children.contains(nsNode)) { realm.children.add(nsNode); nsNode.parent = realm; @@ -275,6 +276,7 @@ private void pruneOwnerChain(DiscoveryNode nsNode, Target target) { } parent.children.remove(child); + child.parent = null; parent.persist(); if (parent.hasChildren()