Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added more relevant constraints to the quarkus-bom #26565

Merged
merged 1 commit into from
Jul 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
197 changes: 197 additions & 0 deletions bom/application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,11 @@
<artifactId>brotli4j</artifactId>
<version>${brotli4j.version}</version>
</dependency>
<dependency>
<groupId>com.aayushatharva.brotli4j</groupId>
<artifactId>native-linux-x86_64</artifactId>
<version>${brotli4j.version}</version>
</dependency>

<!-- Jackson dependencies, imported as a BOM -->
<dependency>
Expand Down Expand Up @@ -1155,6 +1160,11 @@
<artifactId>quarkus-jdbc-db2</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-db2-deployment</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
Expand Down Expand Up @@ -2933,6 +2943,11 @@
<artifactId>bcpkix-jdk15on</artifactId>
<version>${bouncycastle.version}</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcutil-jdk15on</artifactId>
<version>${bouncycastle.version}</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bc-fips</artifactId>
Expand Down Expand Up @@ -2980,6 +2995,26 @@
<version>${dekorate.version}</version>
<classifier>noapt</classifier>
</dependency>
<dependency>
<groupId>io.dekorate</groupId>
<artifactId>s2i-annotations</artifactId>
<version>${dekorate.version}</version>
</dependency>
<dependency>
<groupId>io.dekorate</groupId>
<artifactId>docker-annotations</artifactId>
<version>${dekorate.version}</version>
</dependency>
<dependency>
<groupId>io.dekorate</groupId>
<artifactId>option-annotations</artifactId>
<version>${dekorate.version}</version>
</dependency>
<dependency>
<groupId>io.dekorate</groupId>
<artifactId>dekorate-core</artifactId>
<version>${dekorate.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
Expand Down Expand Up @@ -3436,6 +3471,11 @@
<artifactId>quarkus-http-core</artifactId>
<version>${quarkus-http.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus.http</groupId>
<artifactId>quarkus-http-http-core</artifactId>
<version>${quarkus-http.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus.http</groupId>
<artifactId>quarkus-http-servlet</artifactId>
Expand Down Expand Up @@ -3543,6 +3583,11 @@
<artifactId>smallrye-config-source-yaml</artifactId>
<version>${smallrye-config.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye.config</groupId>
<artifactId>smallrye-config-core</artifactId>
<version>${smallrye-config.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-health</artifactId>
Expand All @@ -3554,6 +3599,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-health-api</artifactId>
<version>${smallrye-health.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-health-ui</artifactId>
Expand Down Expand Up @@ -3633,6 +3683,21 @@
<artifactId>smallrye-open-api-ui</artifactId>
<version>${smallrye-open-api.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-graphql</artifactId>
<version>${smallrye-graphql.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-graphql-api</artifactId>
<version>${smallrye-graphql.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-graphql-schema-model</artifactId>
<version>${smallrye-graphql.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-graphql-cdi</artifactId>
Expand Down Expand Up @@ -3680,11 +3745,31 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-opentracing-contrib</artifactId>
<version>${smallrye-opentracing.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-fault-tolerance</artifactId>
<version>${smallrye-fault-tolerance.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-fault-tolerance-api</artifactId>
<version>${smallrye-fault-tolerance.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-fault-tolerance-autoconfig-core</artifactId>
<version>${smallrye-fault-tolerance.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-fault-tolerance-core</artifactId>
<version>${smallrye-fault-tolerance.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-fault-tolerance-context-propagation</artifactId>
Expand Down Expand Up @@ -3735,6 +3820,11 @@
<artifactId>smallrye-context-propagation-jta</artifactId>
<version>${smallrye-context-propagation.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-context-propagation-storage</artifactId>
<version>${smallrye-context-propagation.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-jwt</artifactId>
Expand Down Expand Up @@ -3763,6 +3853,11 @@
<artifactId>smallrye-jwt-build</artifactId>
<version>${smallrye-jwt.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-jwt-common</artifactId>
<version>${smallrye-jwt.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye.stork</groupId>
<artifactId>stork-bom</artifactId>
Expand Down Expand Up @@ -4574,6 +4669,81 @@
<artifactId>wildfly-elytron-security-manager-action</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-auth</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-base</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-http</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-keystore</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-mechanism-digest</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-mechanism-gssapi</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-mechanism-oauth2</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-mechanism-scram</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-mechanism</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-permission</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-provider-util</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-sasl</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-util</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-x500-cert-util</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>
<dependency>
<groupId>org.wildfly.security</groupId>
<artifactId>wildfly-elytron-x500</artifactId>
<version>${wildfly-elytron.version}</version>
</dependency>

<dependency>
<groupId>org.ow2.asm</groupId>
Expand All @@ -4595,6 +4765,11 @@
<artifactId>asm-analysis</artifactId>
<version>${asm.version}</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-util</artifactId>
<version>${asm.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
Expand Down Expand Up @@ -4677,6 +4852,23 @@
</exclusion>
</exclusions>
</dependency>
<!-- TODO current infinispan-client is using 6.0.8 and isn't breaking with the following constraints
<dependency>
<groupId>org.hibernate.search</groupId>
<artifactId>hibernate-search-engine</artifactId>
<version>${hibernate-search.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate.search</groupId>
<artifactId>hibernate-search-mapper-pojo-base</artifactId>
<version>${hibernate-search.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate.search</groupId>
<artifactId>hibernate-search-util-common</artifactId>
<version>${hibernate-search.version}</version>
</dependency>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yrodiere could you have a look at this when you're back? It looks like we cannot enforce Hibernate Search's version properly when using Infinispan.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See this comment specifically: #26565 (comment)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gsmet wdyt about merging it a figuring out the hibernate-search/infinispan compatibility separately? Given that the rest of the constraints aren't related to that.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gsmet I can have a look but I'm not sure what I can do? The version of Infinispan bundled with Quarkus hasn't been updated to HSearch 6.1 yet. Infinispan's main branch has been upgraded, but I don't think it's been published yet.

The only immediate solutions I see are:

  1. Upgrading to a newer version of Infinispan; not sure there is one.
  2. Downgrading Hibernate Search; that doesn't seem wise.
  3. Accepting we won't have matching versions. And that people can't use both Infinispan embedded and the Hibernate Search extension in the same application.

In the future, there are a few possible strategies, none of them great:

  1. Accepting we won't have matching versions. And that people can't use both Infinispan embedded and the Hibernate Search extension in the same application.
  2. Never breaking any SPI in Hibernate Search, ever again.
  3. Waiting for Inifinispan to be released whenever we upgrade Hibernate Search, before upgrading in Quarkus.
  4. Shading Hibernate Search into Infinispan Embedded.

Personally I'd favor 4. It's really supposed to be an internal dependency of Infinispan after all, since they're working hard on hiding all Hibernate Search APIs.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Last time I checked there wasn't a more recent Infinispan version for us to upgrade to, unfortunately.

Never breaking the SPI (2) is a great one :) And if you do, a safe way would be to coordinate releases, so that there is combination of Hibernate Search and Infinispan that works, which is (3).

Shading is an option, although it may complicate CVE tracking and patch delivery. But maybe not that much.

As to how wise downgrading the HS version is, it depends on how often people will run into this issue, basically how critical it is to have a working combination of the two. I am not sure for long it has been broken and whether anybody has run into it yet.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Despite all the complications, we shouldn't just let it go neither. Today we could document it as not being supported. Until one day we get one or more important use-cases that require both HS and Infinispan being present in the same app, at that moment we'll have to make it work somehow and starting from that moment, we will want to preserve compatibility and not have random breakages between releases. So thinking/preparing for that moment could be worth it.

@gsmet I don't think the rest of the changes should be blocked by this issue. Would you prefer to remove the comments I added about the HS/Infinispan issue from the BOM?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope, I will merge it, I was busy on other things.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not have random breakages between releases

It's not random, it's when necessary, on minor versions, in SPIs only, and that's a clearly established policy for all Hibernate projects. Let's not assume we're breaking stuff just because we don't care: we do :)

The exact reason we're having a problem is I'd been told in the past that there would not be any Infinispan Embedded in Quarkus, and since the HotRod (non-Embedded) client does not depend on Hibernate Search, the Hibernate Search dependency shouldn't have affected it at all.

So thinking/preparing for that moment could be worth it.

Certainly.

I'm back from PTO, so I'll be able to look further. First step would be to determine why the Hibernate Search dependency affects Infnispan at all; I thought Infinispan Embedded had been added to Quarkus without my knowledge, but that doesn't seem to be the case? It seems the error is really just in the HotRod client, which shouldn't be depending on Hibernate Search in the first place. I'll look into that.

What should I do to reproduce the issue; just uncomment those lines, build the relevant modules and run Quarkus + Infinispan integration tests?

Today we could document it as not being supported

Sure, documenting would be a good temporary solution.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, to reproduce uncomment the constraints and run io.quarkus.it.infinispan.client.HealthCheckTest.testHealthCheck, you can see the failures from the CI above. Thanks!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

For future reference, the problem was in the test dependencies rather than in the "main" dependencies. Guillaume addressed it here: #26647

-->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
Expand Down Expand Up @@ -4941,6 +5133,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.smallrye.reactive</groupId>
<artifactId>smallrye-reactive-messaging-kafka-api</artifactId>
<version>${smallrye-reactive-messaging.version}</version>
</dependency>
<dependency>
<groupId>io.smallrye.reactive</groupId>
<artifactId>smallrye-reactive-messaging-kafka-test-companion</artifactId>
Expand Down
37 changes: 37 additions & 0 deletions independent-projects/bootstrap/bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,16 @@
<artifactId>maven-resolver-api</artifactId>
<version>${maven-resolver.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-spi</artifactId>
<version>${maven-resolver.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-impl</artifactId>
<version>${maven-resolver.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-util</artifactId>
Expand Down Expand Up @@ -332,6 +342,33 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http-shared</artifactId>
<version>${maven-wagon.version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</exclusion>
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
Expand Down