• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

geo-engine / geoengine / 42035164671
88%
main: 88%

Build:
Build:
LAST BUILD BRANCH: feat/reprojection-performance
DEFAULT BRANCH: main
Ran 05 Nov 2026 01:55PM UTC
Jobs 1
Files 472
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

05 Nov 2026 01:21PM UTC coverage: 88.09% (+0.04%) from 88.053%
42035164671

push

github

web-flow
fix(backend): limit GDAL worker resources and log pool statistics (#1400)

* fix(backend): limit BLAS and OpenMP threads of GDAL workers

GDAL links Armadillo, which links BLAS. A threaded OpenBLAS starts one
idle thread per core in every worker process as soon as it is loaded.
The new setting [gdal_process_pool.worker] blas_threads (default 1) sets
OPENBLAS_NUM_THREADS and OMP_NUM_THREADS when a worker is spawned.

* fix(backend): bound GDAL worker memory and abort stalled remote reads

Without GDAL_CACHEMAX, every worker process may use 5% of the RAM for its
block cache, so 32 workers can take more than all of it. A remote read
that stalls blocks its worker forever; abort transfers that stay below
1 KB/s for 30 s instead of capping the duration of slow but progressing
transfers. The settings comment now says which options apply when, and
the memory bound of the pool.

* fix(backend): reject GDAL process pool sizes of 0 and document their trade-offs

Zero sizes made every GDAL read wait forever. Such configurations are now
rejected at startup. Limits above the number of processes have no effect
but stay allowed, so existing deployments keep starting.

The defaults stay at 32 processes, 16 active and 8 per dataset. In
benchmarks, deriving them from the CPU cores (64/32/32 on 32 cores) was
worse: more parallel reads per file spread its cache over more processes
and left fewer idle workers as cache. Document what each size trades off
instead.

Also let `GdalProcessPool::new` delegate to `new_with_tokio_handle`.

* feat(backend): log GDAL process pool scheduling statistics

Count dispatches by worker affinity (hit, fresh, eviction), dropped
cancelled requests and the longest dataset queue, and log them at debug
level every 30 seconds under the `gdal_pool_stats` target. A hit means
the worker reuses its open dataset, so this measures the pool's cache hit
ratio. A timer in the broker loop reports every interval, also when no
command arrives; intervals with... (continued)

132 of 135 new or added lines in 4 files covered. (97.78%)

1 existing line in 1 file now uncovered.

138538 of 157268 relevant lines covered (88.09%)

534228.37 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
95.62
2.56% geoengine/operators/src/source/gdal_worker_process/process_pool.rs
1
96.82
-0.02% geoengine/services/src/contexts/postgres.rs

Coverage Regressions

Lines Coverage ∆ File
1
95.62
2.56% geoengine/operators/src/source/gdal_worker_process/process_pool.rs
Jobs
ID Job ID Ran Files Coverage
1 42035164671.1 05 Nov 2026 01:55PM UTC 472
88.09
GitHub Action Run
Source Files on build 42035164671
  • Tree
  • List 472
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #42035164671
  • 531c990d on github
  • Prev Build on gh-readonly-queue/main/pr-1393-5514f81b087bbb29c7d2303bb0fe21ba08f3f1e9 (#41635459639)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc