Skip to content

Bump version to 3.12.0 - #71

Merged
rywall merged 1 commit into
masterfrom
release-3-12-0
Aug 20, 2026
Merged

Bump version to 3.12.0#71
rywall merged 1 commit into
masterfrom
release-3-12-0

Conversation

@rywall

@rywall rywall commented Aug 20, 2026

Copy link
Copy Markdown
Member

Cuts a release for the three ArcGIS import commits that have been on master since May without ever shipping. master and rubygems both claim 3.11.2, and the repo carries no tags, so every host app resolving the gem from rubygems has been running without them.

Why now

Stolo's nightly stolo:update_geometry has failed 44 Community imports every night since 2026-07-22. Diagnosed on the production host today:

arcgis.stoloconnect.com advertises HTTP/2 over ALPN and then kills the stream:

* ALPN: server accepted h2
* HTTP/2 stream 1 was not closed cleanly: HTTP_1_1_REQUIRED (err 13)

curl reconnects over HTTP/1.1 and gets a clean 200. GDAL's curl client does not, so ogr2ogr wrote nothing and exited 1. Released 3.11.2 passes the URL straight to ogr2ogr and reads only stdout, so the failure surfaced as JSON::ParserError: unexpected end of input at line 1 column 1 — a parse error for what was really a network error. That mismatch is most of why this took a month to spot; the task still logs Update Geometry task completed because skip_invalid: true swallows each record.

08ea8c5 downloads through open-uri and hands OGR a local file, sidestepping the negotiation. fetch_page also raises SpatialFeatures::ImportError quoting the response body instead of letting JSON.parse fail bare.

What's in the release

Commit
08ea8c5 Download remote URLs via open-uri before passing to ogr2ogr
8d9b0d5 Paginate ArcGIS query responses past maxRecordCount
bda8d82 Bound and cover the ArcGIS query pagination

Verification

Run against the live endpoint from the Stolo production host, with no GDAL_HTTP_VERSION workaround in play:

result
3.11.2 — URL straight to ogr2ogr exit 1, 0 bytes, ERROR 1: Empty reply from server
master — open-uri → tempfile → ogr2ogr exit 0, 1,547,157 bytes, parses cleanly

The same run showed the service caps at 2000 features per response and sets exceededTransferLimit, which is what makes the pagination commits load-bearing rather than incidental — without them the layer imports silently short:

page 1: offset=0    features=2000  exceededTransferLimit=true
page 2: offset=2000 features=66    exceededTransferLimit=nil
TOTAL: 2066

2066 matches what GDAL reports when it paginates on its own, so the walk is complete.

bundle exec rspec locally: 302 examples, 0 failures, 19 pending (all pre-existing, marked Test accidentally merged. Requires code from feature-spatial-calculation-optimization branch).

Why minor

Pagination changes what a truncating endpoint returns for an unchanged query, and bda8d82 adds the SpatialFeatures::GDAL module. The shapefile shell/SQL hardening in f49397d is already in released 3.11.2 and is not part of this delta.

After merge

The gem needs pushing to rubygems before connect_engine (spatial_features ~> 3.11) and then stolo_connect can pick it up.

🤖 Generated with Claude Code

Releases the three ArcGIS import commits that have sat on master since May
unreleased. 3.11.2 is the version both rubygems and master claim, so every
host app resolving the gem from rubygems has been running without them.

Stolo's nightly `update_geometry` has failed 44 Community imports every night
since 2026-07-22, when arcgis.stoloconnect.com began advertising HTTP/2 over
ALPN and then answering `HTTP_1_1_REQUIRED`. GDAL's curl client does not
retry over HTTP/1.1, so `ogr2ogr` returned nothing and the empty stdout
surfaced as `JSON::ParserError: unexpected end of input`. 08ea8c5 downloads
through open-uri and hands OGR a local file, which sidesteps the negotiation
entirely.

The same endpoint caps responses at 2000 features and sets
`exceededTransferLimit`, so 8d9b0d5 and bda8d82 are needed for the layer to
import completely rather than silently short. Verified against the live
service: 2000 features on page one, 66 on page two, 2066 total, matching what
GDAL reports when it paginates on its own.

Minor rather than patch because pagination changes what a truncating endpoint
returns, and because bda8d82 adds the `SpatialFeatures::GDAL` module.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@rywall
rywall merged commit 9ddb166 into master Aug 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant