Skip to content

Upgrading 32 dependencies on main branch#4305

Open
janhoy wants to merge 111 commits intoapache:mainfrom
janhoy:deps-main-combined
Open

Upgrading 32 dependencies on main branch#4305
janhoy wants to merge 111 commits intoapache:mainfrom
janhoy:deps-main-combined

Conversation

@janhoy
Copy link
Copy Markdown
Contributor

@janhoy janhoy commented Apr 21, 2026

Bulk dependency upgrade for main branch. Asked Claude to merge all "clean" solrbot PRs for main into this feature branch. There will be another batch of "clean" upgrades later.

This PR also "manually" upgrades Jetty to 12.0.34 (latest 12.0.x version as 12.1 is breaking chage), and dropwizard-metrics to 4.2.33 (since later will require Jetty 12.1). The solrbot PR branches merged into this are the following:

PR Title Notes
#4158 Update apache.kafka to v3.9.2 Clean merge
#4156 Update kotlin-logging to v8 (major) Clean merge
#4155 Update carrotsearch.randomizedtesting to v2.8.4 Lockfile conflict resolved
#4097 Update openapi.generator to v7.20.0 Clean merge
#4095 Update jackson-bom to v2.21.2 Clean merge
#4094 Update AWS SDK to v2.42.34 Clean merge
#4092 Update bytebuddy to v1.18.8-jdk5 Clean merge
#3942 Update apache.opennlp to v2.5.8 Clean merge
#3917 Update commons-exec to v1.6.0 Lockfile conflict resolved
#3894 Update commons-configuration2 to v2.13.0 TOML conflict resolved (kept newer exec/lang3)
#3861 Update commons-cli to v1.11.0 Lockfile conflict resolved
#3855 Update commons-io to v2.21.0 Lockfile conflict resolved
#3853 Update jersey to v4.0.2 (major) TOML + lockfile conflicts resolved; added missing sha1
#3850 Update commons-codec to v1.21.0 TOML + lockfile conflicts resolved
#3827 Update caffeine to v3.2.3 Clean merge
#3796 Update spotbugs-annotations to v4.9.8 Clean merge
#3794 Update netty to v4.2.12.Final Clean merge
#3757 Update eclipse.jgit to v7.5.0 Clean merge
#3733 Update junit-jupiter to v6.0.3 (major) Clean merge
#3715 Update spotless to v8 (major) Clean merge
#3697 Update mockito to v5.21.0 Lockfile conflict resolved
#3681 Update guava to v33.5.0-jre Clean merge
#3677 Update bouncycastle to v1.84 Clean merge
#3422 Update kotlinx-datetime to v0.7.1-0.6.x-compat Clean merge
#3313 Update kotlinx.coroutines to v1.10.2 TOML conflict resolved (kept newer datetime)
#3293 Update littlerobots.versioncatalogupdate to v1 (major) Clean merge
#3131 Update ltgt.errorprone to v5.1.0 (major) TOML conflict resolved (kept newer mockito)
#3129 Update jakarta.annotation-api to v3 (major) Clean merge
#3114 Update threetenbp to v1.7.2 Clean merge
#3105 Update checker-qual to v3.53.1 Clean merge
#3075 Update netty.tcnative to v2.0.75.Final Lockfile conflict resolved

janhoy added 6 commits April 21, 2026 02:38
…figurations

Local resolveAndLockAll could not resolve wasmJs configurations and left
kotlinx-coroutines-bom/swing/test/test-wasm-js at 1.10.1 for those configs.
Apply the correct 1.10.2 versions from PR apache#3313 so all configurations
consistently use the new version, fixing the CI 'strictly 1.10.1' lock conflict.
dropwizard-metrics 4.2.34+ requires Jetty 12.1.x, which is incompatible with
Solr's embedded Jetty 12.0.x. Downgrade to 4.2.33 (last version supporting
Jetty 12.0.x) and upgrade eclipse-jetty from 12.0.27 to 12.0.34.
jersey-container-jetty-http:4.0.2 is compatible with Jetty 12.0.x.

Regenerate lockfiles and update license checksums for new Jetty version.
dropwizard-metrics 4.2.34+ requires Jetty 12.1.x, which is incompatible with
Solr's embedded Jetty 12.0.x. Downgrade to 4.2.33 (last version supporting
Jetty 12.0.x) and upgrade eclipse-jetty from 12.0.27 to 12.0.34.
jersey-container-jetty-http:4.0.2 is compatible with Jetty 12.0.x.

Regenerate lockfiles and update license checksums for new Jetty version.
BC 1.84 added several new Security.getProperty() calls for internal
configuration properties (ec.max_f2m_field_size, asn1.max_cons_depth, etc.)
that were blocked by the test security manager. Add all property permissions
found in the BC 1.84 jar to avoid future one-by-one failures.
BC 1.84 added two new Security.getProperty() lookups that are denied by
the test and server security managers. Discovered by running
JWTAuthPluginIntegrationTest in a loop until all denials surfaced:
- org.bouncycastle.ec.max_f2m_field_size (EC F2m field size limit)
- org.bouncycastle.asn1.max_cons_depth   (ASN.1 constructed depth limit)

Added to both solr-tests.policy and server/etc/security.policy.
@janhoy janhoy requested a review from Copilot April 21, 2026 08:40
@janhoy
Copy link
Copy Markdown
Contributor Author

janhoy commented Apr 21, 2026

I ran the entire test suite locally and after updating security policy for BouncyCastle upgrade, it all pass. So I'll take this out of draft mode and ready for review, first by Copilot...

@janhoy janhoy marked this pull request as ready for review April 21, 2026 08:41
@janhoy janhoy requested review from dsmiley and gus-asf April 21, 2026 08:47
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@epugh
Copy link
Copy Markdown
Contributor

epugh commented Apr 21, 2026

I like this innovative approach to dealing with dependencies... It has felt to me like more and more time has been going into dependency management and that it was a Sisyphean task. On other projects that are smaller like Quepid I basically do a two day spasm of updating dependencies, manually test, and then call it good about three times a year ;-). I don't have the intertwined issues that we get in Solr!

I wonder if dependency upgrades really need to be in our changelog? If our changelog is for end users, unless a dependency is fixing some big exciting thing, or it's a big new feature, I suspect it's just noise. commons-configuration2 being upgraded? From a user perspective, so what...

@janhoy
Copy link
Copy Markdown
Contributor Author

janhoy commented Apr 21, 2026

I wonder if dependency upgrades really need to be in our changelog

You will see for most changelogs out there, dep upgrades will be a major part of the changelog, and I believe it makes sense. Perhaps more so for libraries such as Solrj. For Solr server it will alert users about whether they can expect a certain bug/cve to be fixed in a given version, which they otherwise would have to scan source code or git to find out.

Speaking about SolrJ, since we don't publish it as a separate artifact (should we?), it would perhaps be useful to have a separate changelog section for solrj dependency upgrades. Eh, well folks can see dependencies in maven central too, I don't know..

@janhoy
Copy link
Copy Markdown
Contributor Author

janhoy commented Apr 21, 2026

I like this innovative approach to dealing with dependencies.

This is the happy-path. Dealing with low hanging fruits. After merging this, there will still be plenty of dep upgrades that did not pass checks, that need manual tweaks, added LICENSE files etc. My thinking is that volunteer can work on each individual problematic solrbot PR to figure out each of them, with or without AI help, and once the PR branch is green, merge it, or gather a bunch of such into a common branch like her.

@janhoy janhoy requested a review from Copilot April 21, 2026 23:14
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 300 out of 346 changed files in this pull request and generated 6 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread solr/core/gradle.lockfile
Comment on lines 175 to 178
org.junit.jupiter:junit-jupiter-api:5.6.2=jarValidation,testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-commons:1.6.2=jarValidation,testCompileClasspath,testRuntimeClasspath
org.junit:junit-bom:5.13.4=compileOnlyHelper,compileOnlyHelperTest
org.junit:junit-bom:5.14.0=compileOnlyHelper,compileOnlyHelperTest
org.junit:junit-bom:5.6.2=jarValidation,testCompileClasspath,testRuntimeClasspath
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

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

The version catalog updates JUnit Jupiter to v6.0.3, but this lockfile still pins JUnit Jupiter/BOM to 5.6.2-era artifacts. With dependency locking enabled, this mismatch is likely to break dependency resolution (or prevent the intended upgrade). Regenerate/write lockfiles after updating versions (e.g., --write-locks) so the locked JUnit coordinates match the requested versions, and ensure only the intended JUnit BOM/Jupiter versions are locked for the relevant configurations.

Copilot uses AI. Check for mistakes.
authors:
- name: Jan Høydahl
links:
- name: PR#4093
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

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

The changelog link text and URL refer to different PR numbers (PR#4093 vs /pull/4305). Update either the name or the url so they match the actual PR for this change.

Suggested change
- name: PR#4093
- name: PR#4305

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,7 @@
title: Update org.eclipse.jgit:org.eclipse.jgit to v7.5.0.202512021534-r
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

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

This changelog entry says JGit was updated to v7.5.0.202512021534-r, but gradle/libs.versions.toml in this PR sets eclipse-jgit to 7.6.0.202603022253-r. To avoid a misleading release note, update the changelog title to the effective version being shipped (or adjust the version catalog if the changelog is correct).

Suggested change
title: Update org.eclipse.jgit:org.eclipse.jgit to v7.5.0.202512021534-r
title: Update org.eclipse.jgit:org.eclipse.jgit to v7.6.0.202603022253-r

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,7 @@
title: Update mockito to v5.21.0
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

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

The version catalog/lockfiles in this PR upgrade Mockito to 5.23.0, but this changelog entry still states v5.21.0. Update the changelog entry to reflect the actual version included by this PR.

Suggested change
title: Update mockito to v5.21.0
title: Update mockito to v5.23.0

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,7 @@
title: Update org.checkerframework:checker-qual to v3.53.1
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

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

This changelog entry states checker-qual v3.53.1, but this PR adds solr/licenses/checker-qual-3.54.0.jar.sha1 and sets checkerframework = \"3.54.0\" in the version catalog. Update the changelog title to match the effective version being shipped.

Suggested change
title: Update org.checkerframework:checker-qual to v3.53.1
title: Update org.checkerframework:checker-qual to v3.54.0

Copilot uses AI. Check for mistakes.
Comment thread gradle/libs.versions.toml
nodegradle-node = "7.1.0"
# @keep Node JS version used in node.gradle (LTS)
nodejs = "22.18.0"
onnx = "1.23.0"
Copy link

Copilot AI Apr 21, 2026

Choose a reason for hiding this comment

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

This PR updates the locked/test dependency com.microsoft.onnxruntime to 1.24.3 (and adds the corresponding solr/licenses/onnxruntime-1.24.3.jar.sha1), but the version catalog still lists onnx = \"1.23.0\". Align the catalog with the effective ONNX Runtime version to avoid future lockfile churn or accidental downgrades.

Suggested change
onnx = "1.23.0"
onnx = "1.24.3"

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants