Skip to content

Commit f70adbb

Browse files
authored
Merge branch 'quarkusio:main' into AI_MVP
2 parents 691daa9 + a6c91dd commit f70adbb

File tree

320 files changed

+1613
-89
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

320 files changed

+1613
-89
lines changed

_data/insights-videos.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,24 @@ socialdescription: "View the Podcast on these platforms"
55
futureheadline: "Scheduled Podcasts"
66

77
# Next upcoming session (update weekly)
8-
nextsessiontitle: "EPISODE #220: Virtual Threads vs Reactive Programming in Quarkus"
9-
nextsessiondate: "2025-09-29T13:00Z"
10-
nextsessionguest: "Willem Jan Glerum"
8+
nextsessiontitle: "EPISODE #221: Back to basics with Observability - Part 2"
9+
nextsessiondate: "2025-10-06T13:00Z"
10+
nextsessionguest: "Bruno Baptista"
1111

1212

1313
# upcoming session list (update weekly)
1414

1515
futurevideos:
1616

17-
- title: "EPISODE #220: Virtual Threads vs Reactive Programming in Quarkus"
18-
link:
19-
date: "September 29, 2025"
20-
authors: "Willem Jan Glerum"
21-
2217
- title: "EPISODE #221: Back to basics with Observability - Part 2"
2318
link:
2419
date: "October 6, 2025"
2520
authors: "Bruno Baptista"
2621

27-
- title: "EPISODE #222: To Be Scheduled"
22+
- title: "EPISODE #222: AI Assisted Development with Quarkus Dev MCP"
2823
link:
2924
date: "October 13, 2025"
30-
authors: "Guest TBD"
25+
authors: "Phillip Krüger & Ozan Günalp"
3126

3227
- title: "EPISODE #223: Evolution of Java Code Execution"
3328
link:
@@ -56,6 +51,11 @@ pastheadline: "Archived Podcast Videos"
5651

5752
pastvideos:
5853

54+
- title: "EPISODE #220: Virtual Threads vs Reactive Programming in Quarkus"
55+
link: https://youtube.com/live/YX7NJxOUMWU
56+
date: "September 29, 2025"
57+
authors: "Willem Jan Glerum"
58+
5959
- title: "EPISODE #219: Quarkus Loves Hibernate: ORM and Reactive Together"
6060
link: https://youtube.com/live/aFMOGThAoQU
6161
date: "September 22, 2025"

_data/newsletter.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ headline: "Monthly Newsletters"
22

33
newsletter:
44

5-
- title: "August 2029 Newsletter #59"
5+
- title: "September 2025 Newsletter #60"
6+
link: /newsletter/60/
7+
date: "September 17, 2025"
8+
9+
- title: "August 2025 Newsletter #59"
610
link: /newsletter/59/
711
date: "August 13, 2025"
812

_data/versions.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
quarkus:
2-
version: 3.28.1
3-
announce: /blog/quarkus-3-28-released/
2+
version: 3.28.2
3+
announce: /blog/quarkus-3-28-2-released/
44
graalvm: 'for Java 21'
55
jdk: "17+"
66
maven: 3.9.6+

_data/wg.yaml

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
---
22
working-groups:
3+
- title: "Test classloading"
4+
board-url: "https://github.com/orgs/quarkusio/projects/30"
5+
short-description: |
6+
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.
7+
readme: |
8+
<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>
9+
<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>
10+
<blockquote>
11+
<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>
12+
</blockquote>
13+
<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>
14+
<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>
15+
<ul>
16+
<li>Point of contact: @holly-cummins (@<strong>Holly Cummins</strong> on Zulip)</li>
17+
<li>Proposal: https://github.com/quarkusio/quarkus/discussions/41867</li>
18+
<li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/">Zulip topic</a></li>
19+
</ul>
20+
status: on track
21+
lts: false
22+
completed: false
23+
last-activity: 2025-09-29
24+
last-update-date: 2025-09-08
25+
last-update: |
26+
In the last month, the WG - Test classloading achieved important milestones by successfully closing two issues related to test execution. They resolved problems with continuous testing failing in multi-module projects and addressed failures of QuarkusTests with nested classes in the IDEA IDE. However, a new issue was opened regarding the QuarkusTestProfileAwareClassOrderer, which no longer adheres to its expected contract, indicating ongoing challenges in refining the test classloading process.
27+
28+
(This status update was automatically generated using AI.)
29+
point-of-contact: "@holly-cummins (@<strong>Holly Cummins</strong> on Zulip)"
30+
proposal: https://github.com/quarkusio/quarkus/discussions/41867
31+
discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/
332
- title: "Dev Services Lifecycle"
433
board-url: "https://github.com/orgs/quarkusio/projects/49"
534
short-description: |
@@ -350,35 +379,6 @@ working-groups:
350379
351380
(This status update was automatically generated using AI.)
352381
point-of-contact: "@ia3andy (@<strong>Andy Damevin</strong> on Zulip) and @aloubyansky (@<strong>Alexey Loubyansky</strong> on Zulip)"
353-
- title: "Test classloading"
354-
board-url: "https://github.com/orgs/quarkusio/projects/30"
355-
short-description: |
356-
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.
357-
readme: |
358-
<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>
359-
<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>
360-
<blockquote>
361-
<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>
362-
</blockquote>
363-
<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>
364-
<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>
365-
<ul>
366-
<li>Point of contact: @holly-cummins (@<strong>Holly Cummins</strong> on Zulip)</li>
367-
<li>Proposal: https://github.com/quarkusio/quarkus/discussions/41867</li>
368-
<li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/">Zulip topic</a></li>
369-
</ul>
370-
status: on track
371-
lts: false
372-
completed: false
373-
last-activity: 2025-09-17
374-
last-update-date: 2025-09-08
375-
last-update: |
376-
In the last month, the WG - Test classloading achieved important milestones by successfully closing two issues related to test execution. They resolved problems with continuous testing failing in multi-module projects and addressed failures of QuarkusTests with nested classes in the IDEA IDE. However, a new issue was opened regarding the QuarkusTestProfileAwareClassOrderer, which no longer adheres to its expected contract, indicating ongoing challenges in refining the test classloading process.
377-
378-
(This status update was automatically generated using AI.)
379-
point-of-contact: "@holly-cummins (@<strong>Holly Cummins</strong> on Zulip)"
380-
proposal: https://github.com/quarkusio/quarkus/discussions/41867
381-
discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/
382382
- title: "Gizmo 2"
383383
board-url: "https://github.com/orgs/quarkusio/projects/43"
384384
short-description: |

_generated-doc/latest/config/quarkus-all-config.adoc

Lines changed: 74 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33337,6 +33337,27 @@ endif::add-copy-button-to-env-var[]
3333733337
|boolean
3333833338
|
3333933339

33340+
a| [[quarkus-infinispan-client_quarkus-infinispan-client-cache-cache-transaction-mode]] [.property-path]##link:#quarkus-infinispan-client_quarkus-infinispan-client-cache-cache-transaction-mode[`quarkus.infinispan-client.cache."cache".transaction-mode`]##
33341+
ifdef::add-copy-button-to-config-props[]
33342+
config_property_copy_button:+++quarkus.infinispan-client.cache."cache".transaction-mode+++[]
33343+
endif::add-copy-button-to-config-props[]
33344+
33345+
33346+
[.description]
33347+
--
33348+
Enables transaction mode in the client side, for transactional caches.
33349+
33350+
33351+
ifdef::add-copy-button-to-env-var[]
33352+
Environment variable: env_var_with_copy_button:+++QUARKUS_INFINISPAN_CLIENT_CACHE__CACHE__TRANSACTION_MODE+++[]
33353+
endif::add-copy-button-to-env-var[]
33354+
ifndef::add-copy-button-to-env-var[]
33355+
Environment variable: `+++QUARKUS_INFINISPAN_CLIENT_CACHE__CACHE__TRANSACTION_MODE+++`
33356+
endif::add-copy-button-to-env-var[]
33357+
--
33358+
a|`none`, `non-xa`, `non-durable-xa`, `full-xa`
33359+
|
33360+
3334033361
a| [[quarkus-infinispan-client_quarkus-infinispan-client-backup-cluster-backup-cluster-hosts]] [.property-path]##link:#quarkus-infinispan-client_quarkus-infinispan-client-backup-cluster-backup-cluster-hosts[`quarkus.infinispan-client.backup-cluster."backup-cluster".hosts`]##
3334133362
ifdef::add-copy-button-to-config-props[]
3334233363
config_property_copy_button:+++quarkus.infinispan-client.backup-cluster."backup-cluster".hosts+++[]
@@ -33376,8 +33397,8 @@ ifndef::add-copy-button-to-env-var[]
3337633397
Environment variable: `+++QUARKUS_INFINISPAN_CLIENT_BACKUP_CLUSTER__BACKUP_CLUSTER__CLIENT_INTELLIGENCE+++`
3337733398
endif::add-copy-button-to-env-var[]
3337833399
--
33379-
|string
33380-
|`+++HASH_DISTRIBUTION_AWARE+++`
33400+
a|`basic`, `topology-aware`, `hash-distribution-aware`
33401+
|`+++hash-distribution-aware+++`
3338133402

3338233403
a| [[quarkus-infinispan-client_quarkus-infinispan-client-backup-cluster-backup-cluster-use-schema-registration]] [.property-path]##link:#quarkus-infinispan-client_quarkus-infinispan-client-backup-cluster-backup-cluster-use-schema-registration[`quarkus.infinispan-client.backup-cluster."backup-cluster".use-schema-registration`]##
3338333404
ifdef::add-copy-button-to-config-props[]
@@ -34284,6 +34305,27 @@ endif::add-copy-button-to-env-var[]
3428434305
|boolean
3428534306
|
3428634307

34308+
a| [[quarkus-infinispan-client_quarkus-infinispan-client-client-name-cache-cache-transaction-mode]] [.property-path]##link:#quarkus-infinispan-client_quarkus-infinispan-client-client-name-cache-cache-transaction-mode[`quarkus.infinispan-client."client-name".cache."cache".transaction-mode`]##
34309+
ifdef::add-copy-button-to-config-props[]
34310+
config_property_copy_button:+++quarkus.infinispan-client."client-name".cache."cache".transaction-mode+++[]
34311+
endif::add-copy-button-to-config-props[]
34312+
34313+
34314+
[.description]
34315+
--
34316+
Enables transaction mode in the client side, for transactional caches.
34317+
34318+
34319+
ifdef::add-copy-button-to-env-var[]
34320+
Environment variable: env_var_with_copy_button:+++QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CACHE__CACHE__TRANSACTION_MODE+++[]
34321+
endif::add-copy-button-to-env-var[]
34322+
ifndef::add-copy-button-to-env-var[]
34323+
Environment variable: `+++QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CACHE__CACHE__TRANSACTION_MODE+++`
34324+
endif::add-copy-button-to-env-var[]
34325+
--
34326+
a|`none`, `non-xa`, `non-durable-xa`, `full-xa`
34327+
|
34328+
3428734329
a| [[quarkus-infinispan-client_quarkus-infinispan-client-client-name-backup-cluster-backup-cluster-hosts]] [.property-path]##link:#quarkus-infinispan-client_quarkus-infinispan-client-client-name-backup-cluster-backup-cluster-hosts[`quarkus.infinispan-client."client-name".backup-cluster."backup-cluster".hosts`]##
3428834330
ifdef::add-copy-button-to-config-props[]
3428934331
config_property_copy_button:+++quarkus.infinispan-client."client-name".backup-cluster."backup-cluster".hosts+++[]
@@ -34323,8 +34365,8 @@ ifndef::add-copy-button-to-env-var[]
3432334365
Environment variable: `+++QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__BACKUP_CLUSTER__BACKUP_CLUSTER__CLIENT_INTELLIGENCE+++`
3432434366
endif::add-copy-button-to-env-var[]
3432534367
--
34326-
|string
34327-
|`+++HASH_DISTRIBUTION_AWARE+++`
34368+
a|`basic`, `topology-aware`, `hash-distribution-aware`
34369+
|`+++hash-distribution-aware+++`
3432834370

3432934371
a| [[quarkus-infinispan-client_quarkus-infinispan-client-client-name-backup-cluster-backup-cluster-use-schema-registration]] [.property-path]##link:#quarkus-infinispan-client_quarkus-infinispan-client-client-name-backup-cluster-backup-cluster-use-schema-registration[`quarkus.infinispan-client."client-name".backup-cluster."backup-cluster".use-schema-registration`]##
3433034372
ifdef::add-copy-button-to-config-props[]
@@ -71175,6 +71217,34 @@ endif::add-copy-button-to-env-var[]
7117571217
a|tooltip:query[Authorization response parameters are encoded in the query string added to the `redirect_uri`], tooltip:form-post[Authorization response parameters are encoded as HTML form values that are auto-submitted in the browser and transmitted by the HTTP POST method using the application/x-www-form-urlencoded content type]
7117671218
|tooltip:query[Authorization response parameters are encoded in the query string added to the `redirect_uri`]
7117771219

71220+
a| [[quarkus-oidc_quarkus-oidc-authentication-cache-control]] [.property-path]##link:#quarkus-oidc_quarkus-oidc-authentication-cache-control[`quarkus.oidc.authentication.cache-control`]##
71221+
ifdef::add-copy-button-to-config-props[]
71222+
config_property_copy_button:+++quarkus.oidc.authentication.cache-control+++[]
71223+
endif::add-copy-button-to-config-props[]
71224+
71225+
71226+
`quarkus.oidc."tenant".authentication.cache-control`
71227+
ifdef::add-copy-button-to-config-props[]
71228+
config_property_copy_button:+++quarkus.oidc."tenant".authentication.cache-control+++[]
71229+
endif::add-copy-button-to-config-props[]
71230+
71231+
[.description]
71232+
--
71233+
Set of cache-control directives that must be set when a new session cookie is created, either after a successful authorization code completion or token refresh.
71234+
71235+
Currently, only a `no-store` directive that prohibits caching the session cookie anywhere in the client request chain can be configured.
71236+
71237+
71238+
ifdef::add-copy-button-to-env-var[]
71239+
Environment variable: env_var_with_copy_button:+++QUARKUS_OIDC_AUTHENTICATION_CACHE_CONTROL+++[]
71240+
endif::add-copy-button-to-env-var[]
71241+
ifndef::add-copy-button-to-env-var[]
71242+
Environment variable: `+++QUARKUS_OIDC_AUTHENTICATION_CACHE_CONTROL+++`
71243+
endif::add-copy-button-to-env-var[]
71244+
--
71245+
a|list of `no-store`
71246+
|
71247+
7117871248
a| [[quarkus-oidc_quarkus-oidc-authentication-redirect-path]] [.property-path]##link:#quarkus-oidc_quarkus-oidc-authentication-redirect-path[`quarkus.oidc.authentication.redirect-path`]##
7117971249
ifdef::add-copy-button-to-config-props[]
7118071250
config_property_copy_button:+++quarkus.oidc.authentication.redirect-path+++[]

0 commit comments

Comments
 (0)