Skip to content

Remove distributed rendering, and with it GeoServer from GeoWave's build - #2000

Open
rfecher wants to merge 3 commits into
masterfrom
remove-distributed-rendering
Open

rfecher wants to merge 3 commits into
masterfrom
remove-distributed-rendering

Conversation

@rfecher

@rfecher rfecher commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

For the Eclipse IP review: the tools, Accumulo and HBase JARs that GeoWave publishes each bundled 1,746 GeoServer classes. GeoServer is GPL-2.0, and gs-main / gs-ows are GPL-2.0-only and restricted in Eclipse IP review. They got in because the vector and raster adapters depended on gs-wms-core at compile scope, solely for distributed rendering.

Distributed rendering never ran through GeoServer. Since it was introduced, DistributedRenderCallback has checked style instanceof ProcessFunction on a FeatureTypeStyle, which is never true, so the DistributedRender SLD always rendered as an ordinary style inside GeoServer. Correcting that check exposed two further failures: the deregistered internal process factory, then GeoServer not finding internal:InternalDistributedRender. The maintainer decided to remove the feature rather than repair it.

Changes

  • Removed:
    • the adapter/vector/render package and its test, DistributedRenderProcess, InternalProcessFactory, DistributedRenderProcessUtils, org.geotools.renderer.lite.DistributedRenderer, and applicationContext.xml, whose only bean was the getMapCallback;
    • the render paths in GeoWaveFeatureCollection and GeoWaveFeatureReader, and the reference in GeoWaveGSProcessFactory;
    • both DistributedRender SLDs and GeoServerIngestIT's distributed-render tile check. Its other WMS checks stay.
  • Persistable IDs 509-513 and 521 are retired, not reused, each with a comment in FeatureAdapterPersistableRegistry.
  • GeoServer leaves the build. gs-wms-core is gone from the vector and raster adapters, as are the analytics API's exclusions and all gs-* entries in the root POM. The only GeoServer left is the integration-test harness's gs-web-app WAR in test/pom.xml.
    • gt-process-feature, which arrived through GeoServer, is now explicit, because DecimationProcess uses it.
    • cyclops is dropped, because only the render aggregation used it.
  • Guards:
    • the shaded tools, Accumulo and HBase JARs exclude org.geoserver*:*;
    • .utility/publish-release-binaries.sh refuses to publish a JAR containing org/geoserver or org/vfny.
  • Version pins:
    • tika-core is pinned at 3.3.2, because s3fs-nio's 2.9.2 is affected by CVE-2025-66516;
    • gt-epsg-hsql is excluded from gt-netcdf.
  • Migration notes: the removal, and what the tools, Accumulo and HBase JARs no longer bundle. Besides GeoServer, that includes Spring, Spring Security, httpclient5, xstream and freemarker.

Verification (JDK 21, local)

  • Full clean build with formatter validation and SpotBugs (0 bugs in 47 modules). 754 unit tests; the only errors are the 2 known embedded-Redis ones on Apple Silicon. PersistableRegistryTest passes 2/2.
  • JAR contents, master → this branch:
JAR org/geoserver org/vfny
tools 1,746 → 0 111 → 0
Accumulo 1,746 → 0 111 → 0
HBase 1,746 → 0 111 → 0
GeoServer plugin 0 → 0 0 → 0
  • ITs:
    • accumulo-it-server: 168 run, 0 failures.
    • hbase-it-server: 160 run, 0 failures.
    • GeoServerIngestIT and GeoServerIT under filesystem-it: 24 run, 0 failures.
  • geowave gs run with the GeoServer 3.0.1 WAR:
    • a filesystem store with 361 points;
    • WMS GetMap with an ordinary style returned the correct PNG;
    • WFS GetFeature returned 361 features;
    • no class-loading errors.

Eclipse IP

DEPENDENCIES: 805 → 716 entries, 0 restricted. No gs-* remains.

  • 7 of the 18 previously restricted entries left with the removed dependencies.
  • The IP team approved the other 11 since the file was last generated.

IP Check and Python Tests will fail here until #1998 merges; the runner's newer Maven rejects docs/pom.xml.

Rich Fecher added 3 commits October 26, 2026 13:11
The geowave:DistributedRender rendering transformation never took
effect through GeoServer. Since it was introduced in 0.9.3, the GetMap
callback that should have handed such a layer to the
DistributedRenderAggregation checked whether the layer's
FeatureTypeStyle was a ProcessFunction, which it never is, so
GeoServer rendered the layer itself like any other, and
GeoServerIngestIT's distributed render check compared two ordinary
renders. Making the callback match turns up further failures against
GeoServer 3 (the WMS stand-in has no GeoServer configuration, and
GeoServer's direct raster path cannot find the internal process), and
the feature is the only GeoWave code that uses GeoServer's classes,
which are GPL-licensed.

This removes the adapter/vector/render package,
DistributedRenderProcess, InternalProcessFactory,
DistributedRenderProcessUtils, the DistributedRenderer in
org.geotools.renderer.lite, the getMapCallback bean and its
applicationContext.xml, the DistributedRender styles and the
GeoServerIngestIT check that used one. GeoWaveFeatureCollection and
GeoWaveFeatureReader lose their distributed render paths.

Persistable IDs 509 to 513 and 521 are retired rather than freed.

Co-authored-by: Rich Fecher <richard.fecher@vantor.com>
With distributed rendering gone, no GeoWave code uses GeoServer, yet
the vector and raster adapters still had gs-wms-core as a compile
dependency, so the tools, Accumulo and HBase JARs each carried 1,746
entries under org/geoserver and 111 under org/vfny, from gs-main,
gs-ows, gs-platform and gs-wms-core, all GPL-licensed or restricted
in Eclipse IP review, along with Spring and the other libraries only
GeoServer used.

* The adapters no longer depend on GeoServer, the root POM no longer
  manages its artifacts and the analytics API no longer needs to
  exclude them. Only the integration tests still use GeoServer: they
  run its WAR, as geowave gs run does.
* The vector adapter declares gt-process-feature, which
  DecimationProcess implements and which used to come through
  GeoServer, managed with the GeoTools scope so the GeoServer plugin
  JAR still leaves it to GeoServer. It drops cyclops, which only the
  distributed render aggregation used.
* tika-core is managed at the 3.3.2 GeoServer used to bring in; left
  alone, s3fs-nio's 2.9.2 would replace it, and CVE-2025-66516
  affects tika-core up to 3.2.1. gt-netcdf no longer brings in
  gt-epsg-hsql, which the exclusion on gs-wms-core used to keep out by
  accident.
* The tools, Accumulo and HBase JARs exclude any org.geoserver
  artifact from shading, and the release script refuses to publish a
  JAR with GeoServer classes in it.

Co-authored-by: Rich Fecher <richard.fecher@vantor.com>
89 dependencies leave the list with GeoServer, among them gs-main,
gs-ows, gs-platform and gs-wms-core, the Spring and Spring Security
modules only GeoServer used, and tika-core 2.9.2, gt-epsg-hsql and
hsqldb. No GeoServer artifact remains. Of the 18 entries that were
restricted, 7 are among those removed, and the other 11 have been
approved since the file was last generated, so none is restricted.

sqlite-jdbc leaves the list too, though the REST services WAR still
bundles it: the rest-services-war profile adds it, and Dash runs
without that profile, so it was only listed because GeoServer brought
it in.

Co-authored-by: Rich Fecher <richard.fecher@vantor.com>
@rfecher rfecher added the run-its Run the integration test matrix on this pull request label Oct 26, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-its Run the integration test matrix on this pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant