-
Language:
English
-
Language:
English
Release Notes for Thorntail 2.5
For use with Thorntail 2.5.1
Abstract
Preface
Date of release: 2020-05-12
Providing feedback on Red Hat documentation
We appreciate your feedback on our documentation. To provide feedback, you can highlight the text in a document and add comments.
This section explains how to submit feedback.
Prerequisites
- You are logged in to the Red Hat Customer Portal.
- In the Red Hat Customer Portal, view the document in Multi-page HTML format.
Procedure
To provide your feedback, perform the following steps:
Click the Feedback button in the top-right corner of the document to see existing feedback.
NoteThe feedback feature is enabled only in the Multi-page HTML format.
- Highlight the section of the document where you want to provide feedback.
Click the Add Feedback pop-up that appears near the highlighted text.
A text box appears in the feedback section on the right side of the page.
Enter your feedback in the text box and click Submit.
A documentation issue is created.
- To view the issue, click the issue tracker link in the feedback view.
Chapter 1. Required Infrastructure Component Versions
Red Hat does not provide support for components listed below, with the exception of components explicitly designated as supported.
Component name | Version |
---|---|
Maven | 3.6.0 |
Fabric8 Maven Plugin | 4.3.1 |
OpenJDK 8, OpenJDK 11[c] | |
Red Hat Enterprise Linux 7[d] | 7.7 |
Red Hat Enterprise Linux 8[e] | 8.1 |
OpenShift Container Platform (OCP)[f] | 3.11, 4.3 |
Minishift | 1.34.2 or later |
CDK[g] | 3.11.0 |
git | 2.0 or later |
oc command line tool | 3.11 or later[h] |
[a]
A full JDK installation is required, as JRE does not provide tools for compiling Java applications from source.
[b]
Red Hat OpenJDK is supported by Red Hat
[c]
OpenJDK 9 is not supported by Red Hat.
[d]
For deploying RHOAR-based applications on stand-alone RHEL in a production environment.
[e]
For deploying RHOAR-based applications on stand-alone RHEL in a production environment.
[f]
OCP is supported by Red Hat
[g]
CDK is supported by Red Hat
[h]
The version of the oc CLI tool should correspond to the version of OCP that you are using.
|
Chapter 2. Supported Thorntail Runtime Component Configurations and Integrations
The following resources define the supported configurations and integrations of Red Hat products with Thorntail:
- For a list of technologies that are supported for integration with Thorntail in production environments see the Supported Thorntail 2.5.1 configurations and integrations.
- For a list of Thorntail runtime artifacts and their versions see the Thorntail 2.5.1 component details page.
Chapter 3. Release components
3.1. Supported artifacts introduced in this release
The following supported artifacts are introduced in this release:
-
io.thorntail:ejb-mdb
-
org.jboss.resteasy:resteasy-client-microprofile
3.2. Technology Preview artifacts introduced in this release
No technology preview artifacts have been introduced in this release.
3.3. Artifacts removed in this release
The following artifact is removed in this release.
-
io.smallrye:smallrye-rest-client
3.4. Artifacts deprecated in this release
No artifacts have been declared deprecated in this release.
Chapter 4. Features
4.1. New features and feature upgrades
4.1.1. Support for Thorntail Runtime on IBM Z
The Red Hat build of Thorntail for s390x platform is supported only in OpenShift environments provisioned on IBM Z infrastructure. Running an Thorntail application on a stand-alone installation of RHEL on IBM Z is not supported.
Eclipse OpenJ9 Java images for IBM Z and new images for products supported on IBM Z are available in the Red Hat Ecosystem Catalog.
4.1.2. Deploying example applications on OpenShift provisioned on IBM Z infrastructure
To deploy the example applications on OpenShift environments provisioned on IBM Z infrastructure, specify the relevant IBM Z image name in the pom.xml
file and commands.
Some of the example applications also require other products, such as Red Hat Data Grid to demonstrate the workflows. In this case, you must also change the image names of these products to their relevant IBM Z image names in the YAML file of the example applications.
The Secured example application in Thorntail requires Red Hat SSO 7.3. Since Red Hat SSO 7.3 is not supported on IBM Z, the Secured example is not available for IBM Z.
4.1.3. Feature upgrades
This release of Thorntail introduces the following feature upgrades:
- Eclipse MicroProfile 3.0 support
This release implements Eclipse MicroProfile 3.0 by including the latest SmallRye artifacts. The following specifications have been upgraded to the versions listed below:
Health Check 2.0
-
This release introduces the
@Liveness
and@Readiness
annotations, replacing the@Health
annotation that is now deprecated (see also the Changed and deprecated features section below). -
The
/health/live
and/health/ready
endpoints are introduced in this release. The/health
endpoint now serves as the unified endpoint for the@Health
,@Liveness
and@Readiness
checks.
-
This release introduces the
Metrics 2.0
-
The
@ConcurrentGauge
annotation is introduced in this release, as a replacement of the@Counter(monotonic = false)
annotation (see also the Changed and deprecated features section below).
-
The
Rest Client 1.3
-
The Rest Client interfaces can now extend
Closeable
andAutoCloseable
interfaces. -
The
RestClientBuilder
now includes methods for SSL configuration.
-
The Rest Client interfaces can now extend
- Eclipse MicroProfile JWT improvements
The
microprofile-jwt
fraction has received a number of improvements in this release. The changes are backwards compatible and not expected to break your application code.-
The
@LoginConfig
annotation is no longer required, if you set thethorntail.microprofile.jwt.token.realm
configuration property in your application. If you use the@LoginConfig
annotation with thethorntail.microprofile.jwt.token.realm
property set, ensure that the value of therealmName
property of the@LoginConfig
annotation matches the of thethorntail.microprofile.jwt.token.realm
configuration property. -
You can set
thorntail.microprofile.jwt.enable
configuration property value tofalse
to disable the Eclipse MicroProfile JWT authentication mechanism. The default value of thethorntail.microprofile.jwt.enable
configuration property istrue
. -
You must use the
thorntail.microprofile.jwt.token.signer-pub-key-location
to specify external key assets. Previously available alternate methods are deprecated. (For details, see Changed and deprecated features below.) -
The
thorntail.microprofile.jwt.path.groups
configuration property can be used to select an arbitrary claim inside a JWT token to function as thegroups
claim expected by Eclipse MicroProfile JWT. This is useful if nogroups
claim is present in the JWT token, but some other claim exists that contains the groups information. Unless the custom claim is a standardscope
claim, its value must be formatted as an array of strings. Use the following syntax to reference a claim:path/to/claim
. -
You can use the
thorntail.microprofile.jwt.claims.groups
configuration property to provide a default value for thegroups
claim if the JWT token contains no groups information at all. -
You can use the
thorntail.microprofile.jwt.token.roles.map
configuration property to inline the roles configuration in the Thorntail YAML configuration.
-
The
ejb-mdb
fraction introduced-
This release introduces the
ejb-mdb
fraction. This fraction enables you to deploy Message-Driven Beans, but it does not provide all the components required to set up a messaging infrastructure for your application. This means that you can not use this fraction to create a messaging server, but you can use it connect to an existing external messaging server, if you also provide the correct resource adapter.
4.1.4. Updated components
The components updated in this Thorntail release are:
- Red Hat JBoss EAP 7.2.7.GA
- The EAP dependencies in Thorntail have been updated to Red Hat JBoss Enterprise Application Platform 7.2.7.GA release.
- Red Hat SSO 7.3.7.GA
- The single sign-on components in Thorntail have been updated to Red Hat Single Sign-On 7.3.7.GA release.
- Jaeger 0.34.1
- This release of Thorntail contains Jaeger 0.34.1 client components.
- Apache Thrift 0.13.0
- This release of Thorntail contains Apache Thrift 0.13.0 components.
- RESTEasy 3.9.3.SP1
- This release of Thorntail contains RESTEasy 3.9.3.SP1 framework.
- Jackson 2.10.2
- This release of Thorntail contains Jackson 2.10.2 libraries.
- SmallRye Config 1.3.6.SP01
- This release of Thorntail contains SmallRye Config 1.3.6.SP01.
4.2. Changed and deprecated features
- Microprofile 3.0
Health Check 2.0
The
@Health
annotation is now deprecated. Use the@Liveness
and@Readiness
annotations instead.CautionThis is a breaking change. Ensure that you update your application code to avoid encountering issues with your applications after upgrading to the latest release of Thorntail.
The
outcome
andstate
fields in the JSON response format are replaced by thestatus
field.CautionThis is a breaking change. Ensure that you update your application code and external monitoring to avoid encountering issues with your applications after upgrading to the latest release of Thorntail.
Metrics 2.0
-
Some of the base metrics (defined by the Eclipse MicroProfile Metrics 2.0 specification) changed their type from
Counter
toGauge
. -
Some of the base metrics as well as some of the vendor metrics (provided by Thorntail) were renamed. Notably, the names of all accumulating counters now contain the suffix
total
. -
In the OpenMetrics output format (formerly known as the Prometheus format), the metric scope and name are now separated by an underscore (
_
) symbol. This replaces the colon (:
) symbol used as the separator in previous releases. -
Metrics are no longer identified by their
String
name, but by aMetricID
class. TheMetricID
consists of aString
name and a set of key-value pairs called tags. In application code, this set of tags is represented asMap<String, String>
. The
@Counted
annotation no longer includes themonotonic
parameter. Previously, the default value of themonotonic
parameter wasfalse
. Now, the@Counter
annotation always behaves as if themonotonic
parameter was set totrue
. When you want your annotation to behave as whenmonotonic
is set tofalse
, use the@ConcurrentGauge
annotation instead.CautionThese are breaking changes. Ensure that you update your application code and external monitoring configuration to avoid encountering issues with your applications after upgrading to the latest release of Thorntail.
-
Some of the base metrics (defined by the Eclipse MicroProfile Metrics 2.0 specification) changed their type from
Rest Client 1.3
-
In this release, Thorntail replaces the Eclipse MicroProfile Rest Client implementation from the SmallRye project, with the Eclipse MicroProfile Rest Client implementation from RESTEasy. As a result of this change, all public APIs and SPIs that were previously present in the
io.smallrye.restclient
package, such asRestClientProxy
, are now part of theorg.jboss.resteasy.microprofile.client
package. Ensure that you use the new package name in your code and logging configuration. The specification now mandates that
application/json
is used as a default media type, if the Rest Client interface does not include the@Produces
/@Consumes
annotations. If you do not use the@Produces
/@Consumes
annotations in your client interfaces, this change might break your application.CautionThese are breaking changes. Ensure that you update your application code and logging configuration to avoid encountering issues with your applications after upgrading to the latest release of Thorntail.
-
In this release, Thorntail replaces the Eclipse MicroProfile Rest Client implementation from the SmallRye project, with the Eclipse MicroProfile Rest Client implementation from RESTEasy. As a result of this change, all public APIs and SPIs that were previously present in the
- Eclipse MicroProfile JWT
When specifying external key assets, the following referencing methods are now deprecated:
-
Using the
file:
andclasspath:
prefixes in the value of thethorntail.microprofile.jwt.token.signer-pub-key
configuration property to point to the location of an external key asset. -
Using the
thorntail.microprofile.jwt.token.jwks-uri
configuration property to refer to an external JWK Set.
-
Using the
Instead, use thorntail.microprofile.jwt.token.signer-pub-key-location
configuration property.
Using configuration properties in the thorntail.microprofile.jwtauth
namespace is now deprecated. While this is not a breaking change, you are encouraged to update your configuration to use properties from the thorntail.microprofile.jwt
namespace.
- The
wildfly-swarm.useUberJar
system property The
wildfly-swarm.useUberJar
system property previously used by the Thorntail Maven plugin is no longer recognized. To ensure that the Thorntail Maven plugin runs in uberjar mode (as opposed to classpath mode), use thethorntail.useUberJar
system property.CautionThis is a breaking change. Ensure that you use the new name when running Maven to avoid encountering issues with your applications after upgrading to the latest release of Thorntail.
4.3. Technology preview
No technology preview features have been introduced in this release.
Chapter 5. Fixed issues
This Thorntail release contains the following bug fixes.
5.1. HTTP/2 protocol is automatically enabled on IBM JRE
Description
Prior to this release, HTTP/2 protocol was not automatically enabled on IBM JRE. This issue is fixed and HTTP/2 is automatically enabled on IBM JRE when the required cipher suite is available.
5.2. All configurations work as expected on IBM JRE
Prior to this release, configurations of some elements, such as security realms, were not applied on IBM JRE. For example, the following YAML file did not load correctly.
thorntail: management: http-interface-management-interface: security-realm: ManagementRealm security-realms: ManagementRealm: in-memory-authentication: users: albert: password: wow_E=m*c^2 in-memory-authorization: users: albert: roles: - admin
This issue occurred because the Thorntail configuration system expected Class.getMethods() to return methods in a certain order. However, by definition, the method Class.getMethods() does not return methods in any particular order.
The issue is fixed. Thorntail explicitly sorts the methods that are returned and the configurations work as expected on IBM JRE.
5.3. Notable fixed non-security issues
5.3.1. Eclipse MicroProfile Metrics: Application metric behavior does not conform to metrics specification
Description
Prior to this release, metrics would not be registered upon deployment, but would instead be registered when the metric method was first called. This issue was fixed and metrics are now registered correctly.
5.3.2. Eclipse MicroProfile RestClient fails when using CompletionStage
and @PathParam
Description
Prior to this release, invoking a Eclipse MicroProfile RestClient interface method that returns CompletionStage
and has a @PathParam
parameters would result in an error. This issue was fixed and asynchronous Eclipse MicroProfile RestClient invocations now work correctly.
5.3.3. SmallRye Config: Incorrect interpretation of escaped backslash ('\\') character sequence
Description
Due to a bug in the SmallRye Config component in the previous release, it was not possible to use a backslash character to escape another backslash character. This could even result in wrong array conversion, if there was a comma character right after the double backslash sequence. See the example below for details. This issue has been resolved in this release and the behavior no longer occurs.
Example
thorntail: microprofile: config: config-sources: propertiesSource: properties: arrayProperty: element1,element2\\,element3,element41\,element42,ele\\ment5
The expected interpretation of the value entered in the arrayProperty
in the example above is: element1
, element2\
, element3
, element41,element42
, ele\ment5
Instead, the arrayProperty
value entered as shown in the example above was interpreted as: element1
, element2\,element3
, element41\,element42
, ele\\ment5
5.3.4. Thorntail Topology OpenShift fraction does not work on OpenShift 4.2
Description
Prior to this release, using the Thorntail Topology fraction on an OpenShift 4.2 cluster resulted in the following exception at runtime:
org.jboss.msc.service.StartException in service "swarm.topology.openshift".service-watcher: Failed to start service ... Caused by: com.openshift.restclient.authorization.ResourceForbiddenException: forbidden: User "system:anonymous" cannot get path "/apis" forbidden: User "system:anonymous" cannot get path "/apis"
The behavior was caused by an issue with the OpenShift Java REST Client. The issue has been resolved in the 9.0 release of the OpenShift Java REST Client, and Thorntail now includes the new version.
5.4. Fixed security issues
For a list of resolved security issues, see Advisories related to this release.
Chapter 6. Known issues
6.1. Thorntail applications fail to boot due to logging issues
Description
Thorntail is based on WildFly. In Wildfly, the value of the java.util.logging.manager
property should always be set to org.jboss.logmanager.LogManager
(JBoss LogManager). The JBoss Modules initialize the log manager while booting. However, in some cases, java.util.logging
is called before the log manager is set. In such cases, the Thorntail application fails to boot and returns the following error:
ERROR: WFLYCTL0013: Operation ("parallel-extension-add") failed - address: ([]) java.lang.RuntimeException: WFLYCTL0079: Failed initializing module org.jboss.as.logging ... Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: WFLYLOG0078: The logging subsystem requires the log manager to be org.jboss.logmanager.LogManager. The subsystem has not be initialized and cannot be used. To use JBoss Log Manager you must add the system property "java.util.logging.manager" and set it to "org.jboss.logmanager.LogManager"
Cause
The Thorntail application fails to boot if java.util.logging
is initialized too early. Some of the reasons for java.util.logging
being initialized too early are:
- The application uses Java agents, such as the Jolokia agent
- The JDK itself uses logging
Workaround
To use Thorntail on OpenShift, it is recommended to switch off Java agents that are available in the Red Hat Java S2I images.
You can switch off the agents using one of the following ways:
To switch off Jolokia agent, you should set the following environment variables:
-
AB_OFF
totrue
-
AB_JOLOKIA_OFF
totrue
-
The following example shows an OpenShift deployment configuration where the environment variables are set.
apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata: ... spec: ... template: metadata: ... spec: containers: - image: ... env: - name: AB_JOLOKIA_OFF value: "true" - name: AB_OFF value: "true" ...
- You can also use Fabric8 Maven plugin to generate the following YAML files. These files set the environment variables as shown in the following code.
<plugin> <groupId>io.fabric8</groupId> <artifactId>fabric8-maven-plugin</artifactId> <version>${version.io.fabric8.fabric8-maven-plugin}</version> <executions> <execution> <goals> <goal>resource</goal> <goal>build</goal> </goals> </execution> </executions> <configuration> <resources> <env> <AB_OFF>true</AB_OFF> <AB_JOLOKIA_OFF>true</AB_JOLOKIA_OFF> </env> </resources> </configuration> </plugin>
-
You can explicitly configure JBoss LogManager as the
java.util.logging.manager
. The following example shows you the configuration:
java -Xbootclasspath/p:/home/test/.m2/repository/org/jboss/logmanager/jboss-logmanager/2.1.14.Final-redhat-00001/jboss-logmanager-2.1.14.Final-redhat-00001.jar:/home/test/.m2/repository/org/wildfly/common/wildfly-common/1.5.1.Final-redhat-00001/wildfly-common-1.5.1.Final-redhat-00001.jar -Djboss.modules.system.pkgs=org.jboss.logmanager,org.wildfly.common -Djava.util.logging.manager=org.jboss.logmanager.LogManager -jar myapp-thorntail.jar
6.2. Eclipse MicroProfile Fault Tolerance: CDI contexts available in @Timeout
methods
Description
If your application contains a @Timeout
method that uses a contextual service , such as the @RequestScoped
MyService
shown in the example below, the contexts are not activated for that service.
@Inject private MyService service; @Timeout public String doSomething() throws InterruptedException { return "Hello " + service.call(); }
The method is not @Asynchronous
and should, therefore, be executed on the caller thread, which would make the Context and Dependency Injection (CDI) contexts available. However, the following debug message indicates that the contexts are not available:
2018-04-03 21:16:35,976 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /: org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.enterprise.context.RequestScoped
Cause
This issue is caused by @Timeout
methods always being invoked on a separate thread, even if they are not @Asynchronous
.
Workaround
At the time of this release, there is no workaround available for this issue.
6.3. Harmless error message in application log: Missing org.glassfish:javax.el-api:3.0.1.b08-redhat-1
Description
If your application, or any of its dependencies, depends on the Java Expression Language, it will display the following warning message during startup.
Failed downloading org/glassfish/javax.el-api/3.0.1.b08-redhat-1/javax.el-api-3.0.1.b08-redhat-1.pom from https://repository.jboss.org/nexus/content/groups/public/. Reason: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.glassfish:javax.el-api:pom:3.0.1.b08-redhat-1 in jboss-public-repository-group (https://repository.jboss.org/nexus/content/groups/public/) Failed downloading org/glassfish/javax.el-api/3.0.1.b08-redhat-1/javax.el-api-3.0.1.b08-redhat-1.pom from http://repo.gradle.org/gradle/libs-releases-local/. Reason: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.glassfish:javax.el-api:pom:3.0.1.b08-redhat-1 in gradle (http://repo.gradle.org/gradle/libs-releases-local) Failed downloading org/glassfish/javax.el-api/3.0.1.b08-redhat-1/javax.el-api-3.0.1.b08-redhat-1.pom from https://repo.maven.apache.org/maven2/. Reason: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.glassfish:javax.el-api:pom:3.0.1.b08-redhat-1 in central (https://repo.maven.apache.org/maven2) Failed downloading org/glassfish/javax.el-api/3.0.1.b08-redhat-1/javax.el-api-3.0.1.b08-redhat-1.pom from http://repo1.maven.org/maven2/. Reason: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact org.glassfish:javax.el-api:pom:3.0.1.b08-redhat-1 in central (http://repo1.maven.org/maven2)
The message is harmless and does not impact the functionality of the application.
Cause
The likely cause of this issue is related to the way dependency resolution works in Thorntail. During the dependency resolution phase, Thorntail ignores dependency exclusions, and thus pulls in javax.el-api
, despite javax.el-api
being excluded in the EAP BOM. Because it is interpreted as a valid dependency, it is indicated as missing due to being absent form the repository, which causes the error messages displayed in the build log.
Workaround
At the time of this release, there is no workaround available for this issue.
6.4. Connection between a RHEL 8-based database application and a RHEL 7-based MySQL 5.7 database fails due to TLS protocol version mismatch
Description
Attempting to open a TLS-secured connection using OpenSSL between an application container built on a RHEL 8-based OpenJDK builder image and a database container built on a RHEL 7-based MySQL 5.7 container image results in a connection failure due to a javax.net.ssl.SSLHandshakeException
at runtime: For more detail, view the issue in JIRA.
... Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) ...
Cause
The issue occurs due to a difference in the latest supported TLS protocol version between RHEL 7 and RHEL 8. The TLS implementation on RHEL 7 supports TLS protocol versions 1.0 (deprecated), 1.1, and 1.2. The TLS implementation on RHEL 8 also supports TLS protocol version 1.3, which is also the default TLS version used in RHEL 8-based builder images. This discrepancy may cause a TLS protocol version mismatch between application components while negotiating a TLS handshake, which in turn causes the connection between the application and database containers to fail.
Workaround
To prevent the issue described above, manually specify a TLS protocol version that is supported on both operating system versions in your database connection string. For example:
jdbc:mysql://testdb-mysql:3306/testdb?enabledTLSProtocols=TLSv1.2
6.5. Thorntail Arquillian Adapter ignores mvn -s settings.xml
Description
When attempting to pass additional repositories referenced in the setting.xml
file to the Thorntail Arquillian adapter when executing integration tests and unit tests, the settings.xml
file is not recognized and the additional repositories are not configured. This issue results in build failure due to missing artifacts, which, in turn, causes the tests to fail.
Workaround
To avoid this issue, manually edit the <configuration>
sections under the Maven Surefire and/or Maven Failsafe plugin entries in the pom.xml
file of your Maven project, manually specifying the <org.apache.maven.user-settings>${session.request.userSettingsFile.path}</org.apache.maven.user-settings>
property to be exported when testing your application. See example for details:
pom.xml
<project> ... <build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <configuration> <org.apache.maven.user-settings>${session.request.userSettingsFile.path}</org.apache.maven.user-settings> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <systemPropertyVariables> <org.apache.maven.user-settings>${session.request.userSettingsFile.path}</org.apache.maven.user-settings> </systemPropertyVariables> </configuration> </plugin> ... </plugins> </build> ... </project>
Chapter 7. Known issues affecting required infrastructure components
Fabric8 Maven Plugin Issue #1640: Pushing an image into a custom repository during an s2i build with FMP 4.1.0 results in a
DuplicateKeyException
.- Affected components and component versions
- This issues affects Fabric8 Maven Plugin 4.1.0.
- Description
-
Fabric8 Maven Plugin does not process
ImageConfiguration
unlessImageConfiguration
also contains aBuildImageConfiguration
. Without a recognizableBuildImageConfiguration
, Fabric8 Maven Plugin repeatedly calls the s2i image generators to create another defaultImageConfiguration
that contains the expectedBuildImageConfiguration
. This results in more than oneImageConfiguration
being specified for the given s2i build, which in turn results in aDuplicateKeyException
when FMP attempts to push the image to the registry specified in thepom.xml
configuration file. This leads to image build failures when a new image build is triggered by a change in the deployment configuration of a pod on OpenShift. - Workaround
To prevent Fabric8 Maven Plugin form generating a duplicate
ImageConfiguration
, place the image configuration inside abuild
section in thepom.xml
configuration file of your project, as shown in the examples below. This in turn prevents theDuplicateKeyException
when new image build is triggered by a change in the deployment configuration of the pod.<configuration> <images> <image> <name> artifactrepository.somecompany.com:18444/demo-boot/demo-boot:1.0 </name> <build> <from> fabric8/S2I_BASE_IMAGE_NAME </from> <assembly> <basedir> /deployments </basedir> <descriptorRef> artifact-with-dependencies </descriptorRef> </assembly> <env> <JAVA_LIB_DIR> /deployments </JAVA_LIB_DIR> <JAVA_MAIN_CLASS> org.example.class.name.Main </JAVA_MAIN_CLASS> </env> </build> ... </image> </images> ... </configurtation>
Chapter 8. Advisories related to this release
The following advisories have been issued to document enhancements, bugfixes, and CVE fixes included in this release.