Skip to content

Commit 4eca0cf

Browse files
authored
Merge branch 'quarkusio:main' into userstories-link
2 parents 00d41a8 + 267a4ea commit 4eca0cf

File tree

5 files changed

+49
-37
lines changed

5 files changed

+49
-37
lines changed

_data/wg.yaml

+41-30
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,16 @@
11
---
22
working-groups:
3-
- title: "Test classloading"
4-
board-url: "https://github.com/orgs/quarkusio/projects/30"
5-
short-description: The goal of this working group is to rewrite Quarkus's test classloading, so that tests are run in the same classloader as the application under tests, and Quarkus extensions can do "Quarkus-y" manipulations of test classes.
3+
- title: "Quarkus 3.20 LTS"
4+
board-url: "https://github.com/orgs/quarkusio/projects/41"
5+
short-description: This working group aims to track the effort around the Quarkus 3.20 LTS version.
66
readme: |
7-
<p>At the moment, Quarkus tests are invoked using one classloader, and then executed in a different classloader. This mostly works well, but means some use cases don't work: extensions cannot manipulate test classes in the same way that they do normal application classes. For example, anything run via a JUnit @TestTemplate test case will see the un-transformed class.</p>
8-
<p>It also means we have extra user-facing complexity, such as the QuarkusTest*Callbacks](https://quarkus.io/guides/getting-started-testing#enrichment-via-quarkustestcallback):</p>
9-
<blockquote>
10-
<p>While it is possible to use JUnit Jupiter callback interfaces like BeforeEachCallback, you might run into classloading issues because Quarkus has to run tests in a custom classloader which JUnit is not aware of.</p>
11-
</blockquote>
12-
<p>A final benefit is a reduction in the internal complexity of our code. Hopping between classloaders during test execution takes a lot of work, and adds a lot of code! It also is brittle in places. For example, because the hop between classloaders relies on serialization in some cases, it's becoming harder to do as the JVM tightens up security restrictions. We used to rely on xstream, but that stopped working in Java 17. In https://github.com/quarkusio/quarkus/pull/40601, @dmlloyd moved us to use the JBoss Serializer, which works better, but might still be affected by future restrictions on class access.</p>
13-
<p>The goal of this working group is to allow test classes to fully participate in the 'quarkification' of classes. The mechanism for this is probably just to load the test classes with the classloader we intend to run them with, so that JUnit sees the 'correct' version of the class.</p>
14-
<ul>
15-
<li>Point of contact: @holly-cummins (@<strong>Holly Cummins</strong> on Zulip)</li>
16-
<li>Proposal: https://github.com/quarkusio/quarkus/discussions/41867</li>
17-
<li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/">Zulip topic</a></li>
18-
</ul>
7+
<p>All the tasks related to the 3.20 LTS, including issues with backport, release process, and so on.</p>
198
status: on track
209
completed: false
21-
last-activity: 2025-02-03
22-
last-update-date: 2025-01-17
10+
last-activity: 2025-02-04
11+
last-update-date: 2024-12-17
2312
last-update: |
24-
Latest CI run: https://github.com/holly-cummins/quarkus/actions/runs/12827466328 (the Misc4 failure is an upstream failure).
25-
26-
Native tests are all running cleanly, and depending which platform you look at, there are between 7 and 15 failing projects on the JVM builds. So that's good progress recovering from the rebase and continuing to fix issues.
27-
point-of-contact: "@holly-cummins (@<strong>Holly Cummins</strong> on Zulip)"
28-
proposal: https://github.com/quarkusio/quarkus/discussions/41867
29-
discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/
13+
Starting tracking tasks fro the 3.19 LTS.
3014
- title: "Observability.Next"
3115
board-url: "https://github.com/orgs/quarkusio/projects/42"
3216
short-description: Observability.Next is a strategic initiative to modernize the observability stack within the Quarkus framework, aiming to streamline and enhance its ability to monitor and manage distributed systems.
@@ -94,23 +78,50 @@ working-groups:
9478
</ul>
9579
status: on track
9680
completed: false
97-
last-activity: 2025-02-03
81+
last-activity: 2025-02-04
9882
last-update-date: 2025-01-30
9983
last-update: |
10084
The initiative just started.
10185
point-of-contact: "@brunobat"
10286
proposal: https://github.com/quarkusio/quarkus/discussions/44423
103-
- title: "Quarkus 3.20 LTS"
104-
board-url: "https://github.com/orgs/quarkusio/projects/41"
105-
short-description: This working group aims to track the effort around the Quarkus 3.20 LTS version.
87+
- title: "Test classloading"
88+
board-url: "https://github.com/orgs/quarkusio/projects/30"
89+
short-description: The goal of this working group is to rewrite Quarkus's test classloading, so that tests are run in the same classloader as the application under tests, and Quarkus extensions can do "Quarkus-y" manipulations of test classes.
10690
readme: |
107-
<p>All the tasks related to the 3.20 LTS, including issues with backport, release process, and so on.</p>
91+
<p>At the moment, Quarkus tests are invoked using one classloader, and then executed in a different classloader. This mostly works well, but means some use cases don't work: extensions cannot manipulate test classes in the same way that they do normal application classes. For example, anything run via a JUnit @TestTemplate test case will see the un-transformed class.</p>
92+
<p>It also means we have extra user-facing complexity, such as the QuarkusTest*Callbacks](https://quarkus.io/guides/getting-started-testing#enrichment-via-quarkustestcallback):</p>
93+
<blockquote>
94+
<p>While it is possible to use JUnit Jupiter callback interfaces like BeforeEachCallback, you might run into classloading issues because Quarkus has to run tests in a custom classloader which JUnit is not aware of.</p>
95+
</blockquote>
96+
<p>A final benefit is a reduction in the internal complexity of our code. Hopping between classloaders during test execution takes a lot of work, and adds a lot of code! It also is brittle in places. For example, because the hop between classloaders relies on serialization in some cases, it's becoming harder to do as the JVM tightens up security restrictions. We used to rely on xstream, but that stopped working in Java 17. In https://github.com/quarkusio/quarkus/pull/40601, @dmlloyd moved us to use the JBoss Serializer, which works better, but might still be affected by future restrictions on class access.</p>
97+
<p>The goal of this working group is to allow test classes to fully participate in the 'quarkification' of classes. The mechanism for this is probably just to load the test classes with the classloader we intend to run them with, so that JUnit sees the 'correct' version of the class.</p>
98+
<ul>
99+
<li>Point of contact: @holly-cummins (@<strong>Holly Cummins</strong> on Zulip)</li>
100+
<li>Proposal: https://github.com/quarkusio/quarkus/discussions/41867</li>
101+
<li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/">Zulip topic</a></li>
102+
</ul>
108103
status: on track
109104
completed: false
110105
last-activity: 2025-02-03
111-
last-update-date: 2024-12-17
106+
last-update-date: 2025-02-04
112107
last-update: |
113-
Starting tracking tasks fro the 3.19 LTS.
108+
We have the first clean CI! It resolves the following issues:
109+
110+
- https://github.com/quarkusio/quarkus/issues/45349
111+
- https://github.com/quarkusio/quarkus/issues/8446
112+
- https://github.com/quarkusio/quarkus/issues/42000
113+
- https://github.com/quarkusio/quarkus/issues/42006
114+
- https://github.com/quarkusio/quarkus/issues/44320
115+
116+
There are ~360 TODOs in the code. The following problems are introduced by the changes:
117+
118+
- Dev services start in the discovery phase (
119+
https://github.com/quarkusio/quarkus/issues/45785 )
120+
- Maven surefire.rerunFailingTestsCount option does not work in the case where there are test profiles or resources, unless the test order falls such that the failing test uses the last profile/resource (
121+
https://github.com/quarkusio/quarkus/issues/46048)
122+
point-of-contact: "@holly-cummins (@<strong>Holly Cummins</strong> on Zulip)"
123+
proposal: https://github.com/quarkusio/quarkus/discussions/41867
124+
discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/
114125
- title: "WebSocket Next"
115126
board-url: "https://github.com/orgs/quarkusio/projects/26"
116127
short-description: WebSocket-Next related tasks

_sass/includes/back-to-top.scss

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
i {
1818
margin-top: .5rem;
19+
padding: 0;
1920
}
2021
}
2122
#backToTop:hover {

_sass/includes/redhat-footer.scss

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
@media screen and (max-width: 480px) {
4747
grid-column: 1/13;
4848
justify-self: center;
49-
order: 2;
49+
order: 1;
5050
}
5151
}
5252
.redhat-logo {
@@ -57,7 +57,7 @@
5757
@media screen and (max-width: 480px) {
5858
grid-column: 1/13;
5959
justify-self: center;
60-
order: 1;
60+
order: 2;
6161
}
6262
}
6363
}

_versions/main/guides/_attributes.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
:logstash-image: docker.io/elastic/logstash:8.15.0
2020
:kibana-image: docker.io/elastic/kibana:8.15.0
2121
:keycloak-docker-image: quay.io/keycloak/keycloak:26.0.7
22-
:jandex-version: 3.2.3
22+
:jandex-version: 3.2.4
2323
:jandex-gradle-plugin-version: 1.0.0
2424
:kotlin-version: 2.0.21
2525
:grpc-version: 1.69.1

_versions/main/guides/hibernate-orm.adoc

+4-4
Original file line numberDiff line numberDiff line change
@@ -1082,7 +1082,7 @@ Jump over to xref:datasource.adoc[Quarkus - Datasources] for all details.
10821082

10831083
Quarkus currently supports the link:{hibernate-orm-docs-url}#multitenacy-separate-database[separate database] approach, the link:{hibernate-orm-docs-url}#multitenacy-separate-schema[separate schema] approach and the link:{hibernate-orm-docs-url}#multitenacy-discriminator[discriminator] approach.
10841084

1085-
To see multitenancy in action, you can check out the link:{quickstarts-tree-url}/hibernate-orm-multi-tenancy-quickstart[hibernate-orm-multi-tenancy-quickstart] quickstart.
1085+
To see multitenancy in action, you can check out the link:{quickstarts-tree-url}/hibernate-orm-multi-tenancy-schema-quickstart[hibernate-orm-multi-tenancy-schema-quickstart] or link:{quickstarts-tree-url}/hibernate-orm-multi-tenancy-database-quickstart[hibernate-orm-multi-tenancy-database-quickstart].
10861086

10871087
=== Writing the application
10881088

@@ -1210,7 +1210,7 @@ quarkus.hibernate-orm.multitenant=SCHEMA <2>
12101210
quarkus.datasource.db-kind=postgresql <3>
12111211
quarkus.datasource.username=quarkus_test
12121212
quarkus.datasource.password=quarkus_test
1213-
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/quarkus_test
1213+
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/quarkus_test
12141214
12151215
quarkus.flyway.schemas=base,mycompany <4>
12161216
quarkus.flyway.locations=classpath:schema
@@ -1278,15 +1278,15 @@ quarkus.hibernate-orm.datasource=base <3>
12781278
quarkus.datasource.base.db-kind=postgresql <4>
12791279
quarkus.datasource.base.username=quarkus_test
12801280
quarkus.datasource.base.password=quarkus_test
1281-
quarkus.datasource.base.jdbc.url=jdbc:postgresql://localhost:5432/quarkus_test
1281+
%prod.quarkus.datasource.base.jdbc.url=jdbc:postgresql://localhost:5432/quarkus_test
12821282
quarkus.flyway.base.locations=classpath:database/base <5>
12831283
quarkus.flyway.base.migrate-at-start=true
12841284
12851285
# Tenant 'mycompany'
12861286
quarkus.datasource.mycompany.db-kind=postgresql <6>
12871287
quarkus.datasource.mycompany.username=mycompany
12881288
quarkus.datasource.mycompany.password=mycompany
1289-
quarkus.datasource.mycompany.jdbc.url=jdbc:postgresql://localhost:5433/mycompany
1289+
%prod.quarkus.datasource.mycompany.jdbc.url=jdbc:postgresql://localhost:5433/mycompany
12901290
quarkus.flyway.mycompany.locations=classpath:database/mycompany <7>
12911291
quarkus.flyway.mycompany.migrate-at-start=true
12921292
----

0 commit comments

Comments
 (0)