Import cloud-dependencies-bom for Azure, AWS, and GCS version management - #355
Merged
Merged
Conversation
Fixes the "IllegalState Could not find a valid Docker environment. Please see logs and check configuration" error in CI builds after the docker version upgrade in ubuntu-latest runners.
groldan
force-pushed
the
centralize_cloud_libs
branch
3 times, most recently
from
February 20, 2026 13:24
960f8c6 to
53e682e
Compare
Member
|
I had a go at this and the GWC updates:
Overall it looks good. Do you have an opportunity to also run some interactive testing? |
Contributor
Author
|
hey, I'm working on a geoserver branch to update the assembly descriptors, then I'll report back on manual testing |
groldan
force-pushed
the
centralize_cloud_libs
branch
from
February 25, 2026 00:17
53e682e to
3f15171
Compare
This was referenced Feb 25, 2026
Replace per-module SDK version properties, Netty BOM convergence profile, and Jackson BOM workaround with io.tileverse:cloud-dependencies-bom, which centrally manages cloud SDK versions, Netty exclusions, and dependency convergence across the geospatial Java ecosystem. Removes local aws.version, azure.version properties, the google-cloud libraries-bom import, and the dependencyConvergence profile that manually aligned Netty and Jackson versions. Adds aws-crt-client and azure-core-http-jdk-httpclient as Netty-free HTTP transports. See https://github.com/tileverse-io/cloud-dependencies-bom
groldan
force-pushed
the
centralize_cloud_libs
branch
from
February 25, 2026 18:19
3f15171 to
0a12de1
Compare
groldan
marked this pull request as ready for review
February 25, 2026 18:21
Contributor
Author
|
@aaime @dromagnoli please check out #354 in order for the COG integration tests to run |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace per-module SDK version properties and Netty BOM workarounds with
io.tileverse:cloud-dependencies-bom, which centrally manages cloud SDK versions, Netty exclusions, and dependency convergence.Removes local azure.version and google-cloud-storage.version properties.
Adds azure-core-http-jdk-httpclient as the Netty-free HTTP transport.
See https://github.com/tileverse-io/cloud-dependencies-bom
From now on, we just need to make sure the same BOM version is imported here and in GeoWebCache. See
Original proposal
This is a proposal to have a centralized BOM to manage cloud storage dependencies (S3, GCS, Azure) dependencies across all projects (imageio-ext, geowebcache, geotools, geoserver, tileverse).
The approach addresses two dependency hell pain points:
In both cases, Netty is the "default" HTTP Client implementation, and both use an SPI mechanism to load the client factory.
The tileverse-dependencies BOM removes Netty from both and provides official alternative HTTP-client implementations.
For Azure, a managed version of
com.azure:azure-core-http-jdk-httpclientis provided.For S3,
software.amazon.awssdk:aws-crt-client. This one provides both Sync and Async HTTP clients, and claims to provide enhanced performance and reliability (see https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/crt-based-s3-client.html)This approach has been implemented already for the PMTiles GeoTools DataStore, and is used in production by GeoServer Cloud, and will be used in following modules for pure-java geoparquet DataStore, Versatiles containers (akin to PMTiles), Zarr, probably COPC and other cloud-native data formats.
Hence the proposal to implement it cross-projects and unify dependency management and convergence.
Further proposal:
The Tileverse project is an Apache2-liensed OS project, deployed to maven central, and open to collaboration.
For the sake of having a managed cloud storage libraries BOM, we could create a
tileverse-cloudstorage-bomrepository, versioned independently of the tileverse libraries, and use that one as the single source of truth for cloud storage dependency management across the involved projects, with shared governance (e.g. the GeoServer PSC).