Skip to content

Commit e6b5004

Browse files
authored
Merge branch 'main' into 1494-simplified-agent-registration
2 parents 610a28a + 6c18e45 commit e6b5004

9 files changed

Lines changed: 65 additions & 31 deletions

File tree

.github/workflows/pr-ci.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,13 @@ jobs:
124124
[[registry]]
125125
location = "docker.io"
126126
blocked = true
127+
- uses: DamianReeves/write-file-action@v1.3
128+
with:
129+
path: /etc/containers/containers.conf
130+
write-mode: overwrite
131+
contents: |
132+
[engine]
133+
service_timeout=0
127134
- name: Install ansi2txt utility
128135
run: |
129136
sudo apt-get update
@@ -208,6 +215,13 @@ jobs:
208215
[[registry]]
209216
location = "docker.io"
210217
blocked = true
218+
- uses: DamianReeves/write-file-action@v1.3
219+
with:
220+
path: /etc/containers/containers.conf
221+
write-mode: overwrite
222+
contents: |
223+
[engine]
224+
service_timeout=0
211225
- name: Install ansi2txt utility
212226
run: |
213227
sudo apt-get update

.github/workflows/push-ci.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ jobs:
5757
[[registry]]
5858
location = "docker.io"
5959
blocked = true
60+
- uses: DamianReeves/write-file-action@v1.3
61+
with:
62+
path: /etc/containers/containers.conf
63+
write-mode: overwrite
64+
contents: |
65+
[engine]
66+
service_timeout=0
6067
- name: Install qemu
6168
run: |
6269
sudo apt update
@@ -130,6 +137,13 @@ jobs:
130137
[[registry]]
131138
location = "docker.io"
132139
blocked = true
140+
- uses: DamianReeves/write-file-action@v1.3
141+
with:
142+
path: /etc/containers/containers.conf
143+
write-mode: overwrite
144+
contents: |
145+
[engine]
146+
service_timeout=0
133147
- name: Install qemu
134148
run: |
135149
sudo apt update

README.md

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Build requirements:
6262
- git
6363
- JDK 21+
6464
- Maven v3+
65-
- [Quarkus CLI](https://quarkus.io/guides/cli-tooling) v3.4.1+ (Recommended)
65+
- [Quarkus CLI](https://quarkus.io/guides/cli-tooling) v3.33.1+ (Recommended)
6666
- [Podman](https://podman.io/docs/installation) 4.7+
6767

6868
Smoketest run requirements:
@@ -87,21 +87,16 @@ For ease and convenience, it is suggested to use `podman` with the following con
8787

8888
```bash
8989
$ systemctl --user enable --now podman.socket
90+
$ # hack to work around testcontainers/podman "Broken pipe" issue
91+
$ sudo bash -c 'echo -e "[engine]\nservice_timeout=0" >> /etc/containers/containers.conf'
9092
```
9193

9294
`$HOME/.bashrc` (or equivalent shell configuration)
9395
```bash
9496
export DOCKER_HOST=unix:///run/user/$(id -u)/podman/podman.sock
9597
```
9698

97-
`$HOME/.testcontainers.properties`
98-
```properties
99-
docker.client.strategy=org.testcontainers.dockerclient.UnixSocketClientProviderStrategy
100-
ryuk.container.image=quay.io/infinispan-test/ryuk\:0.8.1
101-
tinyimage.container.image=registry.access.redhat.com/ubi9/ubi-micro
102-
ryuk.container.privileged=true
103-
testcontainers.reuse.enable=false
104-
```
99+
If developing using `docker` then the above should be unnecessary.
105100

106101
Initialize submodules before building:
107102

pom.xml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@
4949
<org.apache.calcite.version>1.34.0</org.apache.calcite.version>
5050
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
5151
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
52-
<quarkus.platform.version>3.27.3.1</quarkus.platform.version>
52+
<quarkus.platform.version>3.33.1.1</quarkus.platform.version>
5353
<quarkus-quinoa.version>2.8.2</quarkus-quinoa.version>
54-
<org.hibernate.orm.hibernate.jfr.version>7.1.18.Final</org.hibernate.orm.hibernate.jfr.version>
54+
<org.hibernate.orm.hibernate.jfr.version>7.2.6.Final</org.hibernate.orm.hibernate.jfr.version>
5555
<org.codehaus.mojo.build.helper.plugin.version>3.6.1</org.codehaus.mojo.build.helper.plugin.version>
5656
<org.codehaus.mojo.exec.plugin.version>3.6.3</org.codehaus.mojo.exec.plugin.version>
5757
<assembly-plugin.version>3.8.0</assembly-plugin.version>
@@ -298,7 +298,7 @@
298298
</dependency>
299299
<dependency>
300300
<groupId>software.amazon.awssdk</groupId>
301-
<artifactId>netty-nio-client</artifactId>
301+
<artifactId>aws-crt-client</artifactId>
302302
</dependency>
303303
<dependency>
304304
<groupId>org.apache.commons</groupId>
@@ -374,12 +374,12 @@
374374
</dependency>
375375
<dependency>
376376
<groupId>io.quarkus</groupId>
377-
<artifactId>quarkus-junit5</artifactId>
377+
<artifactId>quarkus-junit</artifactId>
378378
<scope>test</scope>
379379
</dependency>
380380
<dependency>
381381
<groupId>io.quarkus</groupId>
382-
<artifactId>quarkus-junit5-mockito</artifactId>
382+
<artifactId>quarkus-junit-mockito</artifactId>
383383
<scope>test</scope>
384384
</dependency>
385385
<dependency>
@@ -400,7 +400,7 @@
400400
</dependency>
401401
<dependency>
402402
<groupId>org.testcontainers</groupId>
403-
<artifactId>junit-jupiter</artifactId>
403+
<artifactId>testcontainers-junit-jupiter</artifactId>
404404
<scope>test</scope>
405405
</dependency>
406406
</dependencies>
@@ -575,6 +575,7 @@
575575
<quarkus.test.arg-line>--network-alias=${quarkus.test.network-alias}</quarkus.test.arg-line>
576576
</systemPropertyVariables>
577577
<skipTests>${skip.surefire.tests}</skipTests>
578+
<argLine>@{argLine}</argLine>
578579
</configuration>
579580
</plugin>
580581
<plugin>
@@ -599,6 +600,9 @@
599600
</configuration>
600601
</execution>
601602
</executions>
603+
<configuration>
604+
<argLine>@{argLine}</argLine>
605+
</configuration>
602606
</plugin>
603607
</plugins>
604608
</build>

schema/openapi.yaml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -859,14 +859,14 @@ components:
859859
type: object
860860
SmartTrigger:
861861
properties:
862+
ID:
863+
type: string
862864
durationConstraint:
863865
type: string
864866
expression:
865867
type: string
866868
firstMetTime:
867869
$ref: '#/components/schemas/Date'
868-
iD:
869-
type: string
870870
id:
871871
type: string
872872
recordingTemplateName:
@@ -1137,6 +1137,9 @@ paths:
11371137
type: integer
11381138
responses:
11391139
"200":
1140+
content:
1141+
application/json:
1142+
schema: {}
11401143
description: OK
11411144
summary: Export Revisions
11421145
tags:
@@ -2062,6 +2065,9 @@ paths:
20622065
required: true
20632066
responses:
20642067
"200":
2068+
content:
2069+
application/json:
2070+
schema: {}
20652071
description: OK
20662072
"400":
20672073
description: Bad Request
@@ -2877,6 +2883,9 @@ paths:
28772883
required: true
28782884
responses:
28792885
"200":
2886+
content:
2887+
application/json:
2888+
schema: {}
28802889
description: OK
28812890
summary: Get an automated analysis report
28822891
tags:
@@ -3616,6 +3625,9 @@ paths:
36163625
required: true
36173626
responses:
36183627
"200":
3628+
content:
3629+
application/json:
3630+
schema: {}
36193631
description: OK
36203632
summary: Get an automated analysis report for a particular recording on the specified target
36213633
tags:

src/main/java/io/cryostat/reports/MemoryCachingReportsListener.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package io.cryostat.reports;
1717

18+
import java.time.Duration;
19+
1820
import io.cryostat.ConfigProperties;
1921
import io.cryostat.discovery.DiscoveryNode;
2022
import io.cryostat.recordings.ActiveRecording;
@@ -27,6 +29,7 @@
2729
import io.quarkus.cache.Cache;
2830
import io.quarkus.cache.CacheName;
2931
import io.quarkus.vertx.ConsumeEvent;
32+
import io.smallrye.common.annotation.Blocking;
3033
import jakarta.enterprise.context.ApplicationScoped;
3134
import jakarta.inject.Inject;
3235
import jakarta.persistence.PreRemove;
@@ -54,6 +57,7 @@ class MemoryCachingReportsListener {
5457

5558
@Inject Logger logger;
5659

60+
@Blocking
5761
@ConsumeEvent(value = ActiveRecordings.ARCHIVED_RECORDING_DELETED)
5862
public void handleArchivedRecordingDeletion(ArchivedRecording recording) {
5963
logger.tracev("archived recording cache invalidation: {0}", recording.name());
@@ -66,7 +70,7 @@ public void handleArchivedRecordingDeletion(ArchivedRecording recording) {
6670
}
6771
String key = RecordingHelper.archivedRecordingKey(jvmId, recording.name());
6872
logger.tracev("Picked up deletion of archived recording: {0}", key);
69-
archivedCache.invalidate(key);
73+
archivedCache.invalidate(key).await().atMost(Duration.ofSeconds(5));
7074
}
7175

7276
@ConsumeEvent(value = Target.TARGET_JVM_DISCOVERY)
@@ -84,6 +88,7 @@ public void handleTargetDiscovery(TargetDiscovery evt) {
8488
}
8589

8690
@PreRemove
91+
@Blocking
8792
@ConsumeEvent(value = ActiveRecordings.ACTIVE_RECORDING_DELETED)
8893
void handleActiveRecordingDeletion(ActiveRecording recording) {
8994
logger.tracev(
@@ -96,7 +101,7 @@ void handleActiveRecordingDeletion(ActiveRecording recording) {
96101
logger.tracev(
97102
"Picked up deletion of active recording: {0} / {1} ({2})",
98103
recording.target.alias, recording.name, key);
99-
activeCache.invalidate(key);
104+
activeCache.invalidate(key).await().atMost(Duration.ofSeconds(5));
100105
}
101106

102107
@PreRemove

src/main/resources/application.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ quarkus.http.filter.static.order=1
248248
quarkus.http.test-timeout=60s
249249

250250
quarkus.s3.sync-client.type=apache
251+
quarkus.s3.async-client.type=aws-crt
251252
storage-ext.url=
252253
storage.presigned-downloads.enabled=${storage.presigned-transfers.enabled}
253254
storage.presigned-transfers.enabled=true

src/test/java/io/cryostat/resources/AgentApplicationResource.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222

2323
import io.quarkus.test.common.DevServicesContext;
2424
import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
25-
import org.junit.runner.Description;
26-
import org.junit.runners.model.Statement;
2725
import org.testcontainers.containers.GenericContainer;
2826
import org.testcontainers.containers.Network;
2927
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
@@ -91,13 +89,6 @@ public String getId() {
9189

9290
@Override
9391
public void close() {}
94-
95-
@Override
96-
public Statement apply(
97-
Statement base, Description description) {
98-
throw new UnsupportedOperationException(
99-
"Unimplemented method 'apply'");
100-
}
10192
});
10293
authProxy = new AuthProxyContainer(network, cryostatPort.get());
10394

src/test/java/itest/agent/AgentTestBase.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import io.vertx.core.json.JsonArray;
3131
import io.vertx.core.json.JsonObject;
3232
import itest.bases.WebSocketTestBase;
33-
import junit.framework.AssertionFailedError;
3433
import org.hamcrest.Matchers;
3534
import org.junit.jupiter.api.BeforeEach;
3635

@@ -217,8 +216,7 @@ private Target waitForDiscoveryViaPolling(Predicate<Target> p) {
217216
elapsed += (now - last);
218217
last = now;
219218
if (Duration.ofNanos(elapsed).compareTo(DISCOVERY_TIMEOUT) > 0) {
220-
throw new RuntimeException(
221-
new AssertionFailedError("Timed out waiting for target discovery"));
219+
throw new IllegalStateException("Timed out waiting for target discovery");
222220
}
223221
try {
224222
Thread.sleep(DISCOVERY_PERIOD.toMillis());

0 commit comments

Comments
 (0)