Skip to content

Commit

Permalink
startup discovery transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewazores committed Oct 8, 2024
1 parent 59bb1d4 commit a4fdd2a
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 57 deletions.
36 changes: 22 additions & 14 deletions src/main/java/io/cryostat/discovery/ContainerDiscovery.java
Original file line number Diff line number Diff line change
Expand Up @@ -199,21 +199,29 @@ void onStart(@Observes StartupEvent evt) {
return;
}

DiscoveryNode universe = DiscoveryNode.getUniverse();
if (DiscoveryNode.getRealm(getRealm()).isEmpty()) {
DiscoveryPlugin plugin = new DiscoveryPlugin();
DiscoveryNode node = DiscoveryNode.environment(getRealm(), BaseNodeType.REALM);
plugin.realm = node;
plugin.builtin = true;
universe.children.add(node);
node.parent = universe;
plugin.persist();
universe.persist();
}
QuarkusTransaction.requiringNew()
.run(
() -> {
logger.debugv("Starting {0} client", getRealm());

DiscoveryNode universe = DiscoveryNode.getUniverse();
if (DiscoveryNode.getRealm(getRealm()).isEmpty()) {
DiscoveryPlugin plugin = new DiscoveryPlugin();
DiscoveryNode node =
DiscoveryNode.environment(getRealm(), BaseNodeType.REALM);
plugin.realm = node;
plugin.builtin = true;
universe.children.add(node);
node.parent = universe;
plugin.persist();
universe.persist();
}

logger.debugv("Starting {0} client", getRealm());
queryContainers();
this.timerId = vertx.setPeriodic(pollPeriod.toMillis(), unused -> queryContainers());
queryContainers();
this.timerId =
vertx.setPeriodic(
pollPeriod.toMillis(), unused -> queryContainers());
});
}

void onStop(@Observes ShutdownEvent evt) {
Expand Down
30 changes: 19 additions & 11 deletions src/main/java/io/cryostat/discovery/CustomDiscovery.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import io.cryostat.targets.TargetConnectionManager;
import io.cryostat.util.URIUtil;

import io.quarkus.narayana.jta.QuarkusTransaction;
import io.quarkus.runtime.StartupEvent;
import io.vertx.mutiny.core.eventbus.EventBus;
import jakarta.annotation.security.RolesAllowed;
Expand Down Expand Up @@ -76,17 +77,24 @@ public class CustomDiscovery {

@Transactional
void onStart(@Observes StartupEvent evt) {
DiscoveryNode universe = DiscoveryNode.getUniverse();
if (DiscoveryNode.getRealm(REALM).isEmpty()) {
DiscoveryPlugin plugin = new DiscoveryPlugin();
DiscoveryNode node = DiscoveryNode.environment(REALM, BaseNodeType.REALM);
plugin.realm = node;
plugin.builtin = true;
universe.children.add(node);
node.parent = universe;
plugin.persist();
universe.persist();
}
QuarkusTransaction.requiringNew()
.run(
() -> {
logger.debugv("Starting {0} client", REALM);

DiscoveryNode universe = DiscoveryNode.getUniverse();
if (DiscoveryNode.getRealm(REALM).isEmpty()) {
DiscoveryPlugin plugin = new DiscoveryPlugin();
DiscoveryNode node =
DiscoveryNode.environment(REALM, BaseNodeType.REALM);
plugin.realm = node;
plugin.builtin = true;
universe.children.add(node);
node.parent = universe;
plugin.persist();
universe.persist();
}
});
}

@Transactional(rollbackOn = {JvmIdException.class})
Expand Down
1 change: 1 addition & 0 deletions src/main/java/io/cryostat/discovery/Discovery.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ void onStart(@Observes StartupEvent evt) {
() -> {
// ensure lazily initialized entries are created
DiscoveryNode.getUniverse();
logger.debugv("Initializing {0} onStart", getClass());

DiscoveryPlugin.<DiscoveryPlugin>findAll().list().stream()
.filter(p -> !p.builtin)
Expand Down
46 changes: 27 additions & 19 deletions src/main/java/io/cryostat/discovery/JDPDiscovery.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import io.cryostat.targets.Target.Annotations;
import io.cryostat.util.URIUtil;

import io.quarkus.narayana.jta.QuarkusTransaction;
import io.quarkus.runtime.ShutdownEvent;
import io.quarkus.runtime.StartupEvent;
import io.quarkus.vertx.ConsumeEvent;
Expand Down Expand Up @@ -70,25 +71,32 @@ void onStart(@Observes StartupEvent evt) {
return;
}

DiscoveryNode universe = DiscoveryNode.getUniverse();
if (DiscoveryNode.getRealm(REALM).isEmpty()) {
DiscoveryPlugin plugin = new DiscoveryPlugin();
DiscoveryNode node = DiscoveryNode.environment(REALM, BaseNodeType.REALM);
plugin.realm = node;
plugin.builtin = true;
universe.children.add(node);
node.parent = universe;
plugin.persist();
universe.persist();
}

logger.debug("Starting JDP client");
jdp.addListener(this);
try {
jdp.start();
} catch (IOException ioe) {
logger.error("Failure starting JDP client", ioe);
}
QuarkusTransaction.requiringNew()
.run(
() -> {
logger.debugv("Starting {0} client", REALM);

DiscoveryNode universe = DiscoveryNode.getUniverse();
if (DiscoveryNode.getRealm(REALM).isEmpty()) {
DiscoveryPlugin plugin = new DiscoveryPlugin();
DiscoveryNode node =
DiscoveryNode.environment(REALM, BaseNodeType.REALM);
plugin.realm = node;
plugin.builtin = true;
universe.children.add(node);
node.parent = universe;
plugin.persist();
universe.persist();
}

logger.debug("Starting JDP client");
jdp.addListener(this);
try {
jdp.start();
} catch (IOException ioe) {
logger.error("Failure starting JDP client", ioe);
}
});
}

void onStop(@Observes ShutdownEvent evt) {
Expand Down
31 changes: 18 additions & 13 deletions src/main/java/io/cryostat/discovery/KubeApiDiscovery.java
Original file line number Diff line number Diff line change
Expand Up @@ -139,19 +139,24 @@ void onStart(@Observes @Priority(1) StartupEvent evt) {
return;
}

DiscoveryNode universe = DiscoveryNode.getUniverse();
if (DiscoveryNode.getRealm(REALM).isEmpty()) {
DiscoveryPlugin plugin = new DiscoveryPlugin();
DiscoveryNode node = DiscoveryNode.environment(REALM, BaseNodeType.REALM);
plugin.realm = node;
plugin.builtin = true;
universe.children.add(node);
node.parent = universe;
plugin.persist();
universe.persist();
}

logger.debugv("Starting {0} client", REALM);
QuarkusTransaction.requiringNew()
.run(
() -> {
logger.debugv("Starting {0} client", REALM);

DiscoveryNode universe = DiscoveryNode.getUniverse();
if (DiscoveryNode.getRealm(REALM).isEmpty()) {
DiscoveryPlugin plugin = new DiscoveryPlugin();
DiscoveryNode node =
DiscoveryNode.environment(REALM, BaseNodeType.REALM);
plugin.realm = node;
plugin.builtin = true;
universe.children.add(node);
node.parent = universe;
plugin.persist();
universe.persist();
}
});
}

void onAfterStart(@Observes StartupEvent evt) {
Expand Down

0 comments on commit a4fdd2a

Please sign in to comment.