Skip to content

Commit

Permalink
3.15.0 release notes
Browse files Browse the repository at this point in the history
  • Loading branch information
ppalaga committed Sep 10, 2024
1 parent 53923a3 commit 628fcf9
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 1 deletion.
1 change: 1 addition & 0 deletions docs/modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
** xref:user-guide/examples.adoc[Examples]
* xref:release-notes/index.adoc[Release notes]
ifeval::[{doc-is-main} == true]
** xref:release-notes/3.15.0.adoc[3.15.0 LTS]
** xref:release-notes/3.14.0.adoc[3.14.0]
** xref:release-notes/3.13.1.adoc[3.13.1]
** xref:release-notes/3.13.0.adoc[3.13.0]
Expand Down
62 changes: 62 additions & 0 deletions docs/modules/ROOT/pages/release-notes/3.15.0.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
= {quarkus-cxf-project-name} 3.15.0 LTS release notes

This is the first release in the new 3.15 https://quarkus.io/blog/lts-releases/[LTS stream].
As usual, where we plan to produce patch releases with bug and security fixes for 12 months.

== Important dependency upgrades

* Quarkus 3.14.x -> 3.15.0 - https://quarkus.io/blog/quarkus-3-15-0-released/[release notes]

== New and noteworthy in {quarkus-cxf-project-name}

=== https://github.com/quarkiverse/quarkus-cxf/issues/1492[#1492] Support using CXF ``TagsCustomizer``s and deprecate dynamic usage of ``MeterFilter``s

Before {quarkus-cxf-project-name} 3.15.0, it was possible to have a `MeterFilter` adding a `Tag` to a meter
relying on a value retrieved from a `@RequestScoped` bean in the following way:

[source,java]
----
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.config.MeterFilter;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
@Singleton
public class DynamicMeterFilter implements MeterFilter {
/** A @RequestScoped bean holding a value of an HTTP header */
@Inject
RequestScopedHeader requestScopedHeader;
@Override
public Meter.Id map(Meter.Id id) {
if (id.getName().startsWith("http.client") || id.getName().startsWith("cxf.client")) {
return id.withTag(Tag.of("my-header", requestScopedHeader.getHeaderValue()));
} else {
return id;
}
}
}
----

The `map()` method would be called on every request and thus the set of tags could be different for every service invocation.

Since {quarkus-cxf-project-name} 3.15.0, this kind of dynamic `MeterFilter` usage is not possible anymore.
It is due to the upgrade to Micrometer 1.13 brought by Quarkus 3.15.0 that caches return values of `MeterFilter`
methods. Those are therefore called only once.

==== How to add Tags to Meters with {quarkus-cxf-project-name} 3.15.0+

If the old way does not work anymore, how can you do the same with {quarkus-cxf-project-name} 3.15.0 or newer?

The answer consists in providing a bean implementing `org.apache.cxf.metrics.micrometer.provider.TagsCustomizer`
and making CXF aware of it via the new `xref:reference/extensions/quarkus-cxf-rt-features-metrics.adoc#quarkus-cxf_quarkus-cxf-metrics-tags-customizers[quarkus.cxf.metrics.tags-customizers]` configuration property.

There is an example in our https://github.com/quarkiverse/quarkus-cxf/tree/eb553e2a3658581baeeef5836f64bdd9775c0efc/integration-tests/hc5[Apache HTTP Client v5 integration test].
The crucial parts are the https://github.com/quarkiverse/quarkus-cxf/blob/eb553e2a3658581baeeef5836f64bdd9775c0efc/integration-tests/hc5/src/main/java/io/quarkiverse/cxf/hc5/it/HeaderToMetricsTagsCustomizer.java[`TagsCustomizer` implementation]
and the `quarkus.cxf.metrics.tags-customizers = #headerToMetricsTagsCustomizer` line in `https://github.com/quarkiverse/quarkus-cxf/blob/eb553e2a3658581baeeef5836f64bdd9775c0efc/integration-tests/hc5/src/main/resources/application.properties#L10[application.properties]`.

== Full changelog

https://github.com/quarkiverse/quarkus-cxf/compare/3.14.0+++...+++3.15.0
2 changes: 2 additions & 0 deletions docs/modules/ROOT/pages/release-notes/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ Those are typically released on Wednesday following the {quarkus-cxf-project-nam
|===
| Quarkus CXF | Release date | Quarkus Platform | CXF

| xref:release-notes/3.15.0.adoc[3.15.0 LTS] | 2024-09-19 | 3.15.0 | 4.0.5

| xref:release-notes/3.14.0.adoc[3.14.0] | 2024-08-22 | 3.14.0 | 4.0.5

| xref:release-notes/3.13.1.adoc[3.13.1] | 2024-07-30 | 3.13.0 | 4.0.5
Expand Down
2 changes: 1 addition & 1 deletion docs/modules/ROOT/pages/release-planning.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Hence to use {quarkus-cxf-project-name} 2.12.0 you'll best wait for Quarkus Plat

== Long term support (LTS) versions

We typically produce patch releases only for LTS streams.
We typically produce patch releases only for https://quarkus.io/blog/lts-releases/[LTS streams].
We choose the same `major.minor` for LTS as Quarkus.

== See also
Expand Down

0 comments on commit 628fcf9

Please sign in to comment.