Skip to content

Enable requireUpperBoundDeps Maven enforcer rule#26717

Merged
thll merged 5 commits into
masterfrom
enforce-require-upper-bound-deps
Jul 23, 2026
Merged

Enable requireUpperBoundDeps Maven enforcer rule#26717
thll merged 5 commits into
masterfrom
enforce-require-upper-bound-deps

Conversation

@thll

@thll thll commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Enables the requireUpperBoundDeps enforcer rule, which fails the build when a
transitive dependency resolves to a lower version than another dependency on the
classpath declares it needs — silent downgrades of this kind have caused runtime
breakage before.

Note: this change was mostly automated, using Claude Code.

Newly managed (previously unmanaged; Maven resolved these below what other
dependencies require — versions chosen as the highest declared requirement in the
tree, not latest):

  • reactor-core 3.7.19 — mcp-core won resolution with 3.7.0 while azure-core
    requires ≥ 3.7.18 (a genuine runtime risk)
  • jsr305 3.0.2 / error_prone_annotations — the guice-bom import silently pins
    2015-era versions via guice-parent
  • jboss-logging 3.6.3.Final — Jersey 4.0.2 declares 3.6.1 (built against
    hibernate-validator 8.x), but we run hibernate-validator 9.x which needs 3.6.3
  • proto-google-common-protos, gson, opentelemetry-semconv,
    org.jetbrains:annotations, azure-json — pairwise version disagreements
    between third-party dependencies (grpc vs. google-cloud, siddhi vs. google-cloud,
    selenium vs. google-cloud, kotlin-stdlib vs. amazon-kinesis-client, msal4j vs.
    azure-core)

Moved, versions unchanged: guava, caffeine, commons-io, HdrHistogram,
antlr4-runtime and the opentelemetry-bom import move from
graylog-project-parent to graylog-parent, so the storage plugins and the
enterprise repo (which don't inherit graylog-project-parent) resolve the same
versions as the server.

Removed:

  • obsolete duplicate okhttp-jvm entry (included in okhttp-bom since 5.1)
  • the swagger-parser aggregate is replaced with swagger-parser-v3: the only
    consumer (the openapi-description command) uses the OpenAPI 3 parser
    exclusively, so this drops the legacy Swagger 1.x/2.0 converter chain (~a dozen
    unmaintained transitive libraries) and removes the need to manage
    swagger-annotations

/prd https://github.com/Graylog2/graylog-plugin-enterprise/pull/14934
/nocl

@thll thll added the e2e-tests Run PR build with e2e tests. label Jul 22, 2026
@thll
thll marked this pull request as ready for review July 22, 2026 08:03
The only consumer (the openapi-description command) exclusively uses the
OpenAPI 3 parser. Depending on swagger-parser-v3 directly drops the legacy
Swagger 1.x/2.0 converter chain of unmaintained transitive libraries and
removes the need to manage swagger-annotations.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@thll
thll requested a review from bernd July 22, 2026 09:09
[skip ci]
@thll
thll requested a review from kroepke July 23, 2026 06:19

@bernd bernd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thank you! I didn't run a smoke test using production artifacts because the e2e-tests are green.

@thll
thll merged commit 9251c62 into master Jul 23, 2026
26 checks passed
@thll
thll deleted the enforce-require-upper-bound-deps branch July 23, 2026 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

e2e-tests Run PR build with e2e tests.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants