Skip to content

Commit

Permalink
configurable container discovery poll period and request timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewazores committed Jan 22, 2024
1 parent 4f21bb8 commit e52d2a4
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
4 changes: 4 additions & 0 deletions src/main/java/io/cryostat/ConfigProperties.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ public class ConfigProperties {
public static final String AWS_OBJECT_EXPIRATION_LABELS =
"storage.buckets.archives.expiration-label";

public static final String CONTAINERS_POLL_PERIOD = "cryostat.discovery.containers.poll-period";
public static final String CONTAINERS_REQUEST_TIMEOUT =
"cryostat.discovery.containers.request-timeout";

public static final String CONNECTIONS_MAX_OPEN = "cryostat.connections.max-open";
public static final String CONNECTIONS_TTL = "cryostat.connections.ttl";
public static final String CONNECTIONS_FAILED_BACKOFF = "cryostat.connections.failed-backoff";
Expand Down
14 changes: 11 additions & 3 deletions src/main/java/io/cryostat/discovery/ContainerDiscovery.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.time.Duration;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
Expand All @@ -35,6 +36,7 @@

import javax.management.remote.JMXServiceURL;

import io.cryostat.ConfigProperties;
import io.cryostat.URIUtil;
import io.cryostat.core.net.JFRConnectionToolkit;
import io.cryostat.core.sys.FileSystem;
Expand Down Expand Up @@ -139,6 +141,12 @@ public abstract class ContainerDiscovery {
@Inject JFRConnectionToolkit connectionToolkit;
@Inject ObjectMapper mapper;

@ConfigProperty(name = ConfigProperties.CONTAINERS_POLL_PERIOD)
Duration pollPeriod;

@ConfigProperty(name = ConfigProperties.CONTAINERS_REQUEST_TIMEOUT)
Duration requestTimeout;

protected long timerId;

protected final CopyOnWriteArrayList<ContainerSpec> containers = new CopyOnWriteArrayList<>();
Expand Down Expand Up @@ -170,7 +178,7 @@ void onStart(@Observes StartupEvent evt) {
}

queryContainers();
this.timerId = vertx.setPeriodic(10_000, unused -> queryContainers());
this.timerId = vertx.setPeriodic(pollPeriod.toMillis(), unused -> queryContainers());
}

void onStop(@Observes ShutdownEvent evt) {
Expand Down Expand Up @@ -231,7 +239,7 @@ private void doContainerListRequest(Consumer<List<ContainerSpec>> successHandler
.addQueryParam(
"filters",
mapper.writeValueAsString(Map.of("label", List.of(DISCOVERY_LABEL))))
.timeout(2_000L)
.timeout(requestTimeout.toMillis())
.as(BodyCodec.string())
.send()
.subscribe()
Expand Down Expand Up @@ -261,7 +269,7 @@ private CompletableFuture<ContainerDetails> doContainerInspectRequest(ContainerS
URI requestPath = URI.create(getContainerQueryURL(container));
webClient
.request(HttpMethod.GET, getSocket(), 80, "localhost", requestPath.toString())
.timeout(2_000L)
.timeout(requestTimeout.toMillis())
.as(BodyCodec.string())
.send()
.subscribe()
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
quarkus.naming.enable-jndi=true
cryostat.discovery.jdp.enabled=false
cryostat.discovery.containers.poll-period=10s
cryostat.discovery.containers.request-timeout=2s
cryostat.discovery.podman.enabled=false
cryostat.discovery.docker.enabled=false
quarkus.test.integration-test-profile=test
Expand Down

0 comments on commit e52d2a4

Please sign in to comment.