Peter
June 1, 2026, 7:05pm
1
Hi all, I am trying to make our GitHub actions more reliable and robust, to minimise having to rerun tests. Here’s one: Throw HttpErrorCodeException for unsupported tile format · geoserver/geoserver@ffd1c7b · GitHub
The root POM declares wagon-webdav:1.0-beta-2 (from 2008) as a build extension. This was needed historically when the artifact repository used the WebDAV protocol, but the current distributionManagement uses plain HTTPS (https://repo.osgeo.org/repository/Geoserver-releases/), which Maven handles natively without any wagon extension.
The extension causes intermittent CI failures because Maven resolves build extensions before the reactor starts — if the download fails (network timeout, mirror lag), the entire build fails immediately with no retry. We’ve seen this on Windows runners recently (above).
Proposal: remove the extension. GeoTools already uses wagon-webdav-jackrabbit (a newer variant) only in specific app-schema packaging POMs that actually deploy to WebDAV endpoints. The GeoServer root POM doesn’t need it.
If anyone’s deployment workflow still relies on this, we could upgrade to wagon-webdav-jackrabbit:3.5.3 instead of removing it, but given the HTTPS URLs in distributionManagement, removal seems safe.
Peter
June 1, 2026, 7:08pm
2
BTW, other improvements I am proposing:
main ← petersmythe:fix/flaky-gwc-integration-test
opened 01:54PM - 31 May 26 UTC
[](https://osgeo-o… rg.atlassian.net/browse/GEOS-12127) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=geoserver&utm_campaign=badge_info)
https://osgeo-org.atlassian.net/browse/GEOS-12127
`testDirectWMSIntegrationWithVirtualServicesAndWorkspacedStyle` fails intermittently because it asserts `MISS` on the first tile request, but the GWC in-memory blob store retains cached tiles across test methods within the same class. The `@Before` method wipes data directory files but does not reset the in-memory cache.
On CI this manifests as either:
- `expected:<[image/png]> but was:<[application/vnd.ogc.se_xml]>` (workspace state corruption from previous test)
- `Expected: "MISS" but was: "HIT"` (tiles cached by previous test method)
**Fix**: Call `gwc.truncate(qualifiedName)` before issuing requests to ensure the test always starts with a clean cache state, regardless of test execution order. The original MISS assertion is preserved.
# Checklist
- [x] I have read the [contribution guidelines](https://github.com/geoserver/geoserver/blob/main/CONTRIBUTING.md).
- [x] I have sent a [Contribution Licence Agreement](https://docs.geoserver.org/latest/en/developer/policies/committing.html) (not required for small changes, e.g., fixing typos in documentation).
- [x] First PR targets the `main` branch (backports managed later; ignore for branch specific issues).
For core and extension modules:
- [ ] New unit tests have been added covering the changes.
- [ ] [Documentation](https://github.com/geoserver/geoserver/tree/main/doc/en/user/source) has been updated (if change is visible to end users).
- [ ] The [REST API docs](https://github.com/geoserver/geoserver/tree/main/doc/en/api/1.0.0) have been updated (when changing configuration objects or the REST controllers).
- [x] There is an issue in the [GeoServer Jira](https://osgeo-org.atlassian.net/browse/GEOS/summary) (except for changes that do not affect administrators or end users in any way).
- [x] Commit message(s) must be in the form ``[GEOS-XYZWV] Title of the Jira ticket``.
- [x] Bug fixes and small new features are presented as a single commit.
- [x] Each commit has a single objective (if there are multiple commits, each has a separate JIRA ticket describing its goal).
main ← petersmythe:fix/flaky-vectortile-metatiling-test
opened 01:44PM - 01 Jun 26 UTC
[](https://osgeo-o… rg.atlassian.net/browse/GEOS-12127) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=geoserver&utm_campaign=badge_info)
https://osgeo-org.atlassian.net/browse/GEOS-12127
`testMetatilingEnabled` fails intermittently because it asserts HIT on sibling tiles immediately after the first metatile request, but the cache write for sibling tiles completes asynchronously. On slow CI runners the write has not finished by the time the next request arrives, producing MISS instead of the expected HIT.
**Fix**: Use Awaitility to poll for the expected HIT on the first sibling tile before asserting the remaining tiles. This tolerates the async nature of metatile cache population (up to 5 seconds) without watering down the assertions. The non-metatiling path (`testMetatilingDisabled`) is unaffected — it expects all MISS and does not wait.
## Checklist
- [x] I have read the [contribution guidelines](https://github.com/geoserver/geoserver/blob/main/CONTRIBUTING.md).
- [x] I have sent a Contribution Licence Agreement (not required for small changes, e.g., fixing typos in documentation).
- [x] First PR targets the main branch (backports managed later; ignore for branch specific issues).
For core and extension modules:
- [x] New unit tests have been added covering the changes.
- [ ] Documentation has been updated (if change is visible to end users).
- [ ] The REST API docs have been updated (when changing configuration objects or the REST controllers).
- [x] There is an issue in the GeoServer Jira (except for changes that do not affect administrators or end users in any way).
- [x] Commit message(s) must be in the form `[GEOS-XYZWV] Title of the Jira ticket`.
- [x] Bug fixes and small new features are presented as a single commit.
- [x] Each commit has a single objective (if there are multiple commits, each has a separate JIRA ticket describing its goal).
main ← petersmythe:fix/flaky-pipelining-task-queue-test
opened 01:50PM - 01 Jun 26 UTC
[](https://osgeo-o… rg.atlassian.net/browse/GEOS-12127) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=geoserver&utm_campaign=badge_info)
https://osgeo-org.atlassian.net/browse/GEOS-12127
`PipeliningTaskQueueTest` fails intermittently (~once per 2 months on CI) but we have no logs from previous failures — GitHub Actions retains logs for only 90 days. Without knowing whether the failure is a `ConditionTimeoutException` (Awaitility 60s timeout) or an `AssertionError` (ordering violation), we cannot determine the root cause or apply a targeted fix.
**What this change does**: Instruments the test to capture diagnostic state on failure, without changing the test logic:
- **On timeout**: reports which tasks completed, which never started vs started but never finished, actual sleep durations, and elapsed time. This will distinguish scheduler thread starvation (likely given observed GitHub Actions runner starvation) from a deadlock/livelock in `PipeliningTaskQueue`.
- **On ordering violation**: reports the full completion order for the affected group with timestamps, enabling root-cause analysis of the pipeline's ordering guarantee.
The original test logic (Random sleep, 60s timeout, ordering assertion) is preserved unchanged — only the failure reporting is enhanced.
**Context**: Andrea Aime has already increased the timeout twice (20s → 60s in [49390d678d8](https://github.com/geoserver/geoserver/commit/49390d678d8)). A further increase to 600s was tested locally but never merged. The current hypothesis is runner starvation causing the `ScheduledExecutorService` (which polls every 10ms) to not fire for extended periods, but this needs confirmation from actual failure diagnostics.
## Checklist
- [x] I have read the [contribution guidelines](https://github.com/geoserver/geoserver/blob/main/CONTRIBUTING.md).
- [x] I have sent a Contribution Licence Agreement (not required for small changes, e.g., fixing typos in documentation).
- [x] First PR targets the main branch (backports managed later; ignore for branch specific issues).
For core and extension modules:
- [x] New unit tests have been added covering the changes.
- [ ] Documentation has been updated (if change is visible to end users).
- [ ] The REST API docs have been updated (when changing configuration objects or the REST controllers).
- [x] There is an issue in the GeoServer Jira (except for changes that do not affect administrators or end users in any way).
- [x] Commit message(s) must be in the form `[GEOS-XYZWV] Title of the Jira ticket`.
- [x] Bug fixes and small new features are presented as a single commit.
- [x] Each commit has a single objective (if there are multiple commits, each has a separate JIRA ticket describing its goal).