Skip to content

Upgrading 32 dependencies on main branch#4305

Merged
janhoy merged 117 commits intoapache:mainfrom
janhoy:deps-main-combined
Apr 22, 2026
Merged

Upgrading 32 dependencies on main branch#4305
janhoy merged 117 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

Resolves #3075, #3105, #3114, #3129, #3131, #3293, #3313, #3422, #3677, #3681, #3697, #3715, #3733, #3757, #3794, #3796, #3827, #3850, #3853, #3855, #3861, #3894, #3917, #3942, #4092, #4094, #4095, #4097, #4155, #4156 and #4158

janhoy added 4 commits April 21, 2026 09:39
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 thread changelog/unreleased/update-dropwizard-metrics-4.2.33.yml Outdated
Comment thread changelog/unreleased/PR#3757-update-org-eclipse-jgit-org-eclipse-jgit.yml Outdated
Comment thread changelog/unreleased/PR#3697-update-mockito.yml Outdated
Comment thread changelog/unreleased/PR#3105-update-org-checkerframework-checker-qual.yml Outdated
Comment thread gradle/libs.versions.toml Outdated
janhoy added 2 commits April 22, 2026 17:10
…v2.42.34

AWS SDK v2.42.34 creates a background thread named response-input-stream-timeout-scheduler
whenever getObject() is called without an explicit ResponseTransformer timeout parameter.
This thread is not cleaned up promptly, causing ThreadLeakError in tests.

Fix by passing ResponseTransformer.toInputStream(Duration.ZERO) to all getObject() calls
in S3StorageClient.pullStream() and the S3 test classes, disabling the timeout mechanism
that spawns the scheduler thread (see aws/aws-sdk-java-v2#6567).

Also remove deprecated @SuppressWarnings("removal") and add .silent() to S3MockRule
builders to suppress Spring Boot startup noise in test output.
@github-actions github-actions Bot added the tests label Apr 22, 2026
janhoy added 4 commits April 22, 2026 22:34
…v2.42.34

AWS SDK v2.42.34 creates a background thread named response-input-stream-timeout-scheduler
whenever getObject() is called without an explicit ResponseTransformer timeout parameter.
This thread is not cleaned up promptly, causing ThreadLeakError in tests.

Fix by passing ResponseTransformer.toInputStream(Duration.ZERO) to all getObject() calls
in S3StorageClient.pullStream() and the S3 test classes, disabling the timeout mechanism
that spawns the scheduler thread (see aws/aws-sdk-java-v2#6567).

Also remove deprecated @SuppressWarnings("removal") and add .silent() to S3MockRule
builders to suppress Spring Boot startup noise in test output.

� Conflicts:
�	solr/modules/s3-repository/src/java/org/apache/solr/s3/S3StorageClient.java
…v2.42.34

AWS SDK v2.42.34 creates a background thread named response-input-stream-timeout-scheduler
whenever getObject() is called without an explicit ResponseTransformer timeout parameter.
This thread is not cleaned up promptly, causing ThreadLeakError in tests.

Fix by passing ResponseTransformer.toInputStream(Duration.ZERO) to all getObject() calls
in S3StorageClient.pullStream() and the S3 test classes, disabling the timeout mechanism
that spawns the scheduler thread (see aws/aws-sdk-java-v2#6567).

Also remove deprecated @SuppressWarnings("removal") and add .silent() to S3MockRule
builders to suppress Spring Boot startup noise in test output.

� Conflicts:
�	solr/modules/s3-repository/src/java/org/apache/solr/s3/S3StorageClient.java
- JGit changelog: 7.5.0 -> 7.6.0.202603022253-r (actual resolved version)
- Mockito changelog: 5.21.0 -> 5.23.0 (actual resolved version)
- checker-qual changelog: 3.53.1 -> 3.54.0 (matches license sha1 file)
- onnx version in libs.versions.toml: 1.23.0 -> 1.24.3 (matches license sha1 file)
- dropwizard changelog: remove spurious PR#4093 link (manual upgrade, no solrbot PR)
@janhoy janhoy merged commit 7f5c4f2 into apache:main Apr 22, 2026
5 checks passed
@janhoy janhoy deleted the deps-main-combined branch April 22, 2026 23:25
@malliaridis
Copy link
Copy Markdown
Contributor

@janhoy Was there a specific reason you updated kotlin-datetime to to v0.7.1-0.6.x-compat? According to documentation, this version should only be picked if there is a compatibility issue present, otherwise 0.7.1 should be used.

A bit of the background: some classes were moved to the Kotlin standard library, which caused some conflicts in some libraries. Therefore they had to introduce a compatibility version for consumers that solves any issues of incompatible libraries. More infos can be found here.

@janhoy
Copy link
Copy Markdown
Contributor Author

janhoy commented Apr 23, 2026

That’s an oversight. I thought look at it but forgot. Will change it to 0.7.1, thanks.

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.

5 participants