Skip to content

Commit

Permalink
Merge pull request #3873 from OpenLiberty/staging
Browse files Browse the repository at this point in the history
Publish GA release post
  • Loading branch information
dmuelle authored Jul 16, 2024
2 parents c1dd979 + a2b2216 commit cda259e
Show file tree
Hide file tree
Showing 6 changed files with 425 additions and 7 deletions.
16 changes: 9 additions & 7 deletions blog_tags.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"blog_tags": [
{
"name": "announcements",
"posts": ["24.0.0.7-beta",
"posts": ["24.0.0.7", "24.0.0.7-beta",
"24.0.0.6", "24.0.0.6-beta",
"24.0.0.5", "24.0.0.5-beta",
"24.0.0.4", "24.0.0.4-beta",
Expand Down Expand Up @@ -80,7 +80,8 @@
"featured": "true"
},{
"name": "microprofile",
"posts": ["24.0.0.7-beta", "24.0.0.6-beta",
"posts": ["24.0.0.7",
"24.0.0.7-beta", "24.0.0.6-beta",
"24.0.0.4", "open-liberty-with-langchain4j-example",
"DevNexus24", "24.0.0.2",
"23.0.0.12", "23.0.0.11",
Expand Down Expand Up @@ -161,7 +162,7 @@
},
{
"name": "release",
"posts": ["24.0.0.7-beta",
"posts": ["24.0.0.7", "24.0.0.7-beta",
"24.0.0.6", "24.0.0.6-beta",
"24.0.0.5", "24.0.0.5-beta",
"24.0.0.4", "24.0.0.4-beta",
Expand Down Expand Up @@ -334,7 +335,7 @@
},
{
"name": "metrics",
"posts": ["24.0.0.7-beta",
"posts": ["24.0.0.7", "24.0.0.7-beta",
"24.0.0.6-beta", "23.0.0.12",
"23.0.0.11", "23.0.0.11-beta",
"23.0.0.10-beta","23.0.0.3",
Expand Down Expand Up @@ -418,7 +419,7 @@
},
{
"name": "community",
"posts": ["simplifying-nosql-database-integration-with-jakarta-nosql",
"posts": ["24.0.0.7", "simplifying-nosql-database-integration-with-jakarta-nosql",
"jakarta-nosql-in-action-meet-jnopo-game",
"jakarta-nosql-challenge-switching-nosql-easily","DevNexus24",
"IvarJakartaData", "Primeur",
Expand Down Expand Up @@ -454,7 +455,7 @@
},
{
"name": "developer-experience",
"posts": ["liberty-user-feature-tutorial",
"posts": ["24.0.0.7", "liberty-user-feature-tutorial",
"liberty-project-starter-guide-IntelliJ", "simplifying-nosql-database-integration-with-jakarta-nosql",
"jakarta-nosql-in-action-meet-jnopo-game", "jakarta-nosql-challenge-switching-nosql-easily",
"spring-boot-3",
Expand Down Expand Up @@ -534,7 +535,8 @@
},
{
"name": "performance-enhancements",
"posts": ["24.0.0.6", "24.0.0.3",
"posts": ["virtual-threads-case-study",
"24.0.0.6", "24.0.0.3",
"Java21-Images", "24.0.0.1",
"23.0.0.10-beta", "23.0.0.6",
"rapid-startup-instanton", "23.0.0.5-beta",
Expand Down
Binary file added img/blog/virtualthreads-liberty-throughput.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions posts/2024-05-21-24.0.0.5.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ seo-description: Open Liberty 24.0.0.5 provides some significant bug fixes, incl
blog_description: Open Liberty 24.0.0.5 provides some significant bug fixes, including several that address CVEs.
open-graph-image: https://openliberty.io/img/twitter_card.jpg
open-graph-image-alt: Open Liberty Logo
blog-available-in-languages:
- lang: ja
path: /ja/blog/2024/05/21/24.0.0.5.html
---
= CVE and notable bug fixes in 24.0.0.5
David Mueller <https://github.com/dmuelle>
Expand Down
56 changes: 56 additions & 0 deletions posts/2024-07-11-virtual-threads-case-study.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
layout: post
title: "Java Virtual Threads - A case study"
# Do NOT change the categories section
categories: blog
author_picture: https://avatars3.githubusercontent.com/gjdeval
author_github: https://github.com/gjdeval
seo-title: Java Virtual Threads - A case study - OpenLiberty.io
seo-description: Run your own apps using Java Virtual Threads on Open Liberty but, for now, we won’t be replacing Open Liberty’s existing self-sizing thread pool with virtual threads. InfoQ.com have today published our article about what our performance team found when they compared Java Virtual Threads with Liberty’s autonomic thread pool, including some bugs that are still being investigated with the OpenJDK community.
blog_description: "You can run your own apps using Java Virtual Threads on Open Liberty but, for now, we won’t be replacing Open Liberty’s existing self-sizing thread pool with virtual threads. InfoQ.com have today published our article about what our performance team found when they compared Java Virtual Threads with Liberty’s autonomic thread pool, including some bugs that are still being investigated with the OpenJDK community."
open-graph-image: https://openliberty.io/img/blog/virtualthreads-liberty-throughput.png
open-graph-image-alt: Throughput of virtual threads vs Liberty thread pool.
additional_authors:
- name: Vijay Sundaresan
github: https://github.com/vijaysun-omr
image: https://avatars0.githubusercontent.com/vijaysun-omr
- name: Rich Hagarty
github: https://github.com/rhagarty
image: https://avatars0.githubusercontent.com/rhagarty
- name: Laura Cowen
github: https://github.com/lauracowen
image: https://avatars0.githubusercontent.com/lauracowen
redirect_link: https://www.infoq.com/articles/java-virtual-threads-a-case-study/
permalink: /blog/redirected.html
---
= Java Virtual Threads: A case study
Gary DeVal <https://github.com/gjdeval>
//Blank line here is necessary before starting the body of the post.

You can run your own apps using Java Virtual Threads on Open Liberty but, for now, we won’t be replacing Open Liberty’s existing self-sizing thread pool with virtual threads.

InfoQ.com have today published our article about what our performance team found when they compared Java Virtual Threads with Liberty’s autonomic thread pool, including some bugs that are still being investigated with the OpenJDK community.
//Add brief summary here that will be displayed in the blog index page and when syndicated to other blog aggregators.


// // // // // // // //
// In the preceding section:
// Do not insert any blank lines between any of the lines.
//
// "open-graph-image" is set to OL logo. Whenever possible update this to a more appropriate/specific image (For example if present a image that is being used in the post). However, it
// can be left empty which will set it to the default
//
// "open-graph-image-alt" is a description of what is in the image (not a caption). When changing "open-graph-image" to
// a custom picture, you must provide a custom string for "open-graph-image-alt".
//
// Replace TITLE with the blog post title.
// Replace AUTHOR_NAME with your name as first author.
// Replace GITHUB_USERNAME with your GitHub username eg: lauracowen
// Replace DESCRIPTION with a short summary (~60 words) of the release (a more succinct version of the first paragraph of the post).
// Replace URL_HERE with the URL of the blog post wherever it's hosted (eg the Medium URL)
//
// Replace AUTHOR_NAME with your name as you'd like it to be displayed, eg: Laura Cowen
//
// Example post: 2023-07-21-instanton-foojay.adoc
//
// // // // // // // //
184 changes: 184 additions & 0 deletions posts/2024-07-16-24.0.0.7.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
---
layout: post
title: "Enhancements for MicroProfile Metrics and a new training course in 24.0.0.7"
# Do NOT change the categories section
categories: blog
author_picture: https://avatars3.githubusercontent.com/dmuelle
author_github: https://github.com/dmuelle
seo-title: Enhancements for MicroProfile Metrics and a new training course in 24.0.0.7 - OpenLiberty.io
seo-description: The 24.0.0.7 release includes enhancements for histogram and timer metrics in MicroProfile 3.0 and 4.0. Also, a new beginner-level training course is now available to teach you the essentials of cloud native Java application development with Open Liberty.
blog_description: The 24.0.0.7 release includes enhancements for histogram and timer metrics in MicroProfile 3.0 and 4.0. Also, a new beginner-level training course is now available to teach you the essentials of cloud native Java application development with Open Liberty.
open-graph-image: https://openliberty.io/img/twitter_card.jpg
open-graph-image-alt: Open Liberty Logo
---
= Enhancements for MicroProfile Metrics and a new training course in 24.0.0.7
David Mueller <https://github.com/dmuelle>
:imagesdir: /
:url-prefix:
:url-about: /



The 24.0.0.7 release includes enhancements for histogram and timer metrics in MicroProfile 3.0 and 4.0. Also, a new beginner-level training course is now available to teach you the essentials of cloud-native Java application development with Open Liberty.


In link:{url-about}[Open Liberty] 24.0.0.7:

* <<mpm, Enhanced histogram, and timer metrics in MicroProfile 3.0 and 4.0>>
* <<course, Learn to develop applications with Open Liberty in the new "Essentials for Cloud-Native Java Application Development" course>>


View the list of fixed bugs in link:https://github.com/OpenLiberty/open-liberty/issues?q=label%3Arelease%3A24007+label%3A%22release+bug%22[24.0.0.7].

Check out link:{url-prefix}/blog/?search=release&search!=beta[previous Open Liberty GA release blog posts].


[#run]


== Develop and run your apps using 24.0.0.7

If you're using link:{url-prefix}/guides/maven-intro.html[Maven], include the following in your `pom.xml` file:

[source,xml]
----
<plugin>
<groupId>io.openliberty.tools</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>3.10.3</version>
</plugin>
----

Or for link:{url-prefix}/guides/gradle-intro.html[Gradle], include the following in your `build.gradle` file:

[source,gradle]
----
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'io.openliberty.tools:liberty-gradle-plugin:3.8.3'
}
}
apply plugin: 'liberty'
----

Or if you're using link:{url-prefix}/docs/latest/container-images.html[container images]:

[source]
----
FROM icr.io/appcafe/open-liberty
----

Or take a look at our link:{url-prefix}/start/[Downloads page].

If you're using link:https://plugins.jetbrains.com/plugin/14856-liberty-tools[IntelliJ IDEA], link:https://marketplace.visualstudio.com/items?itemName=Open-Liberty.liberty-dev-vscode-ext[Visual Studio Code] or link:https://marketplace.eclipse.org/content/liberty-tools[Eclipse IDE], you can also take advantage of our open source link:https://openliberty.io/docs/latest/develop-liberty-tools.html[Liberty developer tools] to enable effective development, testing, debugging, and application management all from within your IDE.

[link=https://stackoverflow.com/tags/open-liberty]
image::img/blog/blog_btn_stack.svg[Ask a question on Stack Overflow, align="center"]

// // // // DO NOT MODIFY THIS COMMENT BLOCK <GHA-BLOG-TOPIC> // // // //
// Blog issue: https://github.com/OpenLiberty/open-liberty/issues/28982
// Contact/Reviewer: tonyreigns
// // // // // // // //
[#mpm]
== Enhanced histogram and timer metrics in MicroProfile 3.0 and 4.0

This release introduces MicroProfile Config properties for MicroProfile 3.0 and 4.0 that are used for configuring the statistics that are tracked and outputted by the histogram and timer metrics. These changes are already available in MicroProfile Metrics 5.1.

In previous MicroProfile Metrics 3.0 and 4.0 releases, histogram and timer metrics tracked only the following values:

* Min/max recorded values
* The sum of all values
* The count of the recorded values
* A static set of percentiles for the 50th, 75th, 95th, 98th, 99th, and 99.9th percentile.

These values are output to the `/metrics` endpoint in Prometheus format.

The new properties can define a custom set of percentiles as well as custom set of histogram buckets for the histogram and timer metrics. Other new configuration properties can enable a default set of histogram buckets, including properties that define an upper and lower bound for the bucket set.

With these properties, you can define a semicolon-separated list of value definitions that use the following syntax:

----
<metric name>=<value-1>[,<value-2>...<value-n>]
----

Some properties can accept multiple values for a given metric name, while others can accept only a single value.

You can use an asterisk (`*`) as a wildcard at the end of the metric name.

[cols="2*"]
|===
| Property | Description
| mp.metrics.distribution.percentiles | Defines a custom set of percentiles for matching Histogram and Timer metrics to track and output. Accepts a set of integer and decimal values for a metric name pairing. Can be used to disable percentile output if no value is provided with a metric name pairing.
| mp.metrics.distribution.histogram.buckets| Defines a custom set of (cumulative) histogram buckets for matching Histogram metrics to track and output. Accepts a set of integer and decimal values for a metric name pairing.
| mp.metrics.distribution.timer.buckets| Defines a custom set of (cumulative) histogram buckets for matching Timer metrics to track and output. Accepts a set of decimal values with a time unit appended (`ms`, `s`, `m`, or `h`, for example) for a metric name pairing.
|mp.metrics.distribution.percentiles-histogram.enabled | Configures any matching Histogram or Timer metric to provide a large set of default histogram buckets to allow for percentile configuration with a monitoring tool. Accepts a true/false value for a metric name pairing.
| mp.metrics.distribution.histogram.max-value| When percentile-histogram is enabled for a Timer, this property defines an upper bound for the buckets reported. Accepts a single integer or decimal value for a metric name pairing.
| mp.metrics.distribution.histogram.min-value| When percentile-histogram is enabled for a Timer, this property defines a lower bound for the buckets reported. Accepts a single integer or decimal value for a metric name pairing.
|mp.metrics.distribution.timer.max-value | When percentile-histogram is enabled for a Histogram, this property defines an upper bound for the buckets reported. Accepts a single decimal value with a time unit appended (`ms`, `s`, `m`, or `h`, for example) for a metric name pairing.
|mp.metrics.distribution.timer.min-value | When percentile-histogram is enabled for a Histogram, this property defines a lower bound for the buckets reported. Accepts a single decimal value with a time unit appended (`ms`, `s`, `m`, or `h`, for example) for a metric name pairing.

|===

You can define the `mp.metrics.distribution.percentiles` property similar to the following example.

----
mp.metrics.distribution.percentiles=alpha.timer=0.5,0.7,0.75,0.8;alpha.histogram=0.8,0.85,0.9,0.99;delta.*=
----

This property creates the `alpha.timer` timer metric to track and output the 50th, 70th, 75th, and 80th percentile values. The `alpha.histogram` histogram metric outputs the 80th, 85th, 90th, and 99th percentile values. Percentiles for any histogram or timer metric that matches with `delta.*` are disabled.

We'll expand on this example and define histogram buckets for the `alpha.timer` timer metric by using the `mp.metrics.distribution.timer.buckets` property.

----
mp.metrics.distribution.timer.buckets=alpha.timer=100ms,200ms,1s
----

This configuration tells the metrics runtime to track and output the count of durations that fall within 0-100ms, 0-200ms and 0-1 seconds. This output is due to the histogram buckets working in a _cumulative_ fashion.

The corresponding prometheus output for the `alpha.timer` metric at the `/metrics` REST endpoint is similar to the following example:

----
# TYPE application_alpha_timer_mean_seconds gauge
application_alpha_timer_mean_seconds 2.9700022497975187
# TYPE application_alpha_timer_max_seconds gauge
application_alpha_timer_max_seconds 5.0
# TYPE application_alpha_timer_min_seconds gauge
application_alpha_timer_min_seconds 1.0
# TYPE application_alpha_timer_stddev_seconds gauge
application_alpha_timer_stddev_seconds 1.9997750210918204
# TYPE alpha_timer_seconds histogram <1>
application_alpha_timer_seconds_bucket{le="0.1"} 0.0 <2>
application_alpha_timer_seconds_bucket{le="0.2"} 0.0 <2>
application_alpha_timer_seconds_bucket{le="1.0"} 1.0 <2>
application_alpha_timer_seconds_bucket{le="+Inf"} 2.0 <2> <3>
application_alpha_timer_seconds_count 2
application_alpha_timer_seconds_sum 6.0
application_alpha_timer_seconds{quantile="0.5"} 1.0
application_alpha_timer_seconds{quantile="0.7"} 5.0
application_alpha_timer_seconds{quantile="0.75"} 5.0
application_alpha_timer_seconds{quantile="0.8"} 5.0
----

<1> The Prometheus metric type is `histogram`. Both the quantiles/percentile and buckets are represented under this type.
<2> The `le` tag represents _less than_ and is for the defined buckets, which are converted to seconds.
<3> Prometheus requires that a `+Inf` bucket counts all hits.


[#course]
== Learn to develop applications with Open Liberty in the new "Essentials for Cloud-Native Java Application Development" course

The link:https://cognitiveclass.ai/courses/essentials-for-java-application-development-with-liberty[Essentials for Cloud-Native Java Application Development] course is published on the link:http://cognitiveclass.ai/[cognitiveclass.ai] site.

This course teaches you the essential skills and technologies to create a basic cloud-native Java application with Open Liberty. You'll learn about REST applications, contexts and dependency injection (CDI), externalizing application configuration, and more. If you score 80% or higher on the final quiz (20 multiple-choice questions), you'll receive the link:https://www.credly.com/org/ibm/badge/liberty-developer-essentials[Liberty Developer Essentials] badge from Credly.


// DO NOT MODIFY THIS LINE. </GHA-BLOG-TOPIC>



== Get Open Liberty 24.0.0.7 now

Available through <<run,Maven, Gradle, Docker, and as a downloadable archive>>.
Loading

0 comments on commit cda259e

Please sign in to comment.