Repository navigation
fix(api): read an ArcGIS error code 503 as RateLimited - #31
Merged
Merged
Conversation
Error::from_arcgis sent every in-body 5xx to ServerError, so an ArcGIS
{"error":{"code":503}} disagreed with an HTTP 503, which is RateLimited,
and with the README and error.hpp. It now maps 503 the same way.
Follow-ups from a review of 314664f..v0.4.2:
- query_layer's paging test now checks each page's text byte for byte.
Emptying every page passed all 131 tests before.
- verify_fixture_checksums.py skips dotfiles such as a Finder .DS_Store,
as the golden coverage test and the SHA256SUMS recipe already do.
- The paged_into comment no longer claims a peak that leaves out the body,
which is alive while its tree is built.
- The 0.4.2 changelog entry no longer says the old stream parser rejected
inf and nan. libc++ 18's stream accepted both.
Reddimus
added a commit
that referenced
this pull request
Sep 25, 2026
## Summary Releases #31: an ArcGIS error object with code 503 is now `RateLimited`, the same as an HTTP 503 and as the docs say. - `include/spc/version.hpp`: 0.4.3. - `CHANGELOG.md`: `[Unreleased]` becomes `[0.4.3] - 2026-09-25`. - `README.md`: `GIT_TAG v0.4.3`. `find_package(spc 0.4)` stays. ## Testing `make test` (131/131), `make lint-md`, and `make test-consumers` pass locally. The consumer check reports "v0.4.3, find_package(spc 0.4)", so the README's pins match `version.hpp`.
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.
Summary
These come from a review of
314664f..v0.4.2: four reviewers, each finding checked by an adversarial verifier, plus an independent Gemini pass. The v0.4.2 code held up. Fuzzing about 290k inputs under ASan showed no out-of-bounds reads, andparse_owned_rootandparse_rootbuilt identical trees. Five small issues survived:Error::from_arcgismapped an in-body{"error":{"code":503}}toServerError. An HTTP 503 isRateLimited, and the README anderror.hppsay 503 isRateLimited. It now maps the same way. A new test covers 503 and 500.query_layerreturns. A verifier released each body beforeon_pageran, so every page came back empty, and all 131 tests still passed. The paging test now compares each page byte for byte.tools/verify_fixture_checksums.pyfailed on a Finder.DS_Storeintests/fixtures, and the SHA256SUMS recipe can't fix that becauselsskips dotfiles. It now skips dotfiles liketest_golden.cppdoes.paged_intocomment said peak memory is "one page's tree plus the result". The body is alive while its tree is built, so the claim was wrong, and the comment now drops it.infandnan. libc++ 18's stream accepts both, because__stage2_float_loopsearches all 32 atoms. The claim is gone, and I'll update the published v0.4.2 notes to match after merge.Rejected after checking:
nullptr + 0is undefined behavior". C++ defines it: [expr.add]/4.NPROC/CMAKEaren't portable". Both are defined at the top, with asysctlfallback.Testing
ServerErrorvsRateLimited) and passes after it.make test(131/131),make lint,make lint-md,make fixtures-check(also with a.DS_Storepresent), andmake test-consumerspass on macOS.