Repository navigation
Fix issues found during the connection-reuse review - #13
Merged
Merged
Conversation
The Connection reuse section quoted latency figures for a cold and a reused connection. They depend on the network path between the client and the API and go stale, so the section now only states that a new connection pays a TCP and TLS handshake and a request on a reused connection does not. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The workflow has run the test suite on pull requests and on pushes to main since the connection-reuse change, but it was still named after its publish job. It is now named CI; the publish job keeps its name and its tag gate. - fail-fast is off, so a failing OTP release no longer cancels the other jobs and every release reports its own result. - actions/checkout and actions/cache move to their current majors, which run on Node.js 24; the runner had been warning that the v4 releases target the deprecated Node.js 20. - Each OTP release is paired with the newest rebar3 release that supports it (3.24 for OTP 25, 3.25 for OTP 26, 3.28 for OTP 27 and later) instead of one 3.24 pin for all of them, and the cache key includes the rebar3 version so a build directory is never shared between rebar3 releases. - OTP 28 and 29 join the test matrix; the publish job stays on OTP 27, now with rebar3 3.28. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The "Look Up a Specific IP" example showed a city, city-level coordinates and a time zone for 8.8.8.8 that the API does not return for that address: it is an anycast address located at country level only, so city is null and the coordinates are country-level. The example now shows the values of the API's own sample response for the address (the same sample serves as a test fixture), explains that fields without data are returned as null, and shows the datacenter flag the address does carry. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
meck 0.9.2, the test dependency, does not compile on OTP 29: its meck_matcher module uses a bare catch, which OTP 29 deprecates, and the dependency build fails on that warning. meck 1.1.1 replaced the catch, but meck 1.1.0 dropped OTP 25, which this matrix keeps, so the matrix stops at OTP 28 for now. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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
Follow-up to #12. It fixes the items recorded under "Noticed, not changed" in that pull request that are stale documentation or CI configuration. The library's code and public API are untouched: the changes are confined to the README and the GitHub Actions workflow.
Changes
CIinstead of "Publish to Hex.pm". The workflow has run the test suite on pull requests and pushes tomainsince Reuse HTTPS connections, add new response fields #12, so the checks on pull requests and the Actions tab are now labelled accordingly; the publish job keeps its name and itsv*tag gate.fail-fast: falseon the test matrix: a failing OTP release no longer cancels the other jobs, so every release reports its own result instead of showing as cancelled.actions/checkout@v7andactions/cache@v6replace the v4 releases, which the runner flagged as targeting the deprecated Node.js 20 (both current majors run on Node.js 24;erlef/setup-beam@v1already does). The deprecation warning disappears from the job logs.3.24pin for every job, each OTP release is paired with the newest rebar3 release that supports it according to rebar3's compatibility table (3.24 for OTP 25, 3.25 for OTP 26, 3.28 for OTP 27 and later); the publish job uses OTP 27 with rebar3 3.28. The cache key includes the rebar3 version so a build directory is never restored into a job that runs a different rebar3.cityisnull, the coordinates are country-level,is_datacenterandis_anycastaretrue) instead of the Ashburn/Virginia values, and the example explains that fields without data are returned asnull.Not changed
httpc:request/5raisesexit:{noproc, _}instead of returning{error, {not_started, Profile}}for a profile that is not running: an OTP bug (httpc:handle_request/9catcheserror:{noproc, _}whilegen_server:call/3exits), so the library keeps handling both shapes.{error, socket_closed_remotely}:httpcitself re-dispatches a request whose keep-alive connection was closed before the response headers arrived; the single retry inipdata_http:post/4covers the remaining case and stays as documented there.httpcexposes no option for it, so the OTP defaults remain.if: startsWith(github.ref, 'refs/tags/v')is the standard form and shows the job as skipped on non-tag events; nothing to change.catchis deprecated in OTP 29 and the dependency build fails on that warning); meck 1.1.1 fixed it, but meck 1.1.0 dropped OTP 25, which the matrix keeps.erlang-ipdata/<application version>with the version read from the.appfile at run time; the established header value was kept rather than renamed.Verification
Run locally on OTP 25.3.2 with rebar3 3.19.0, with
jsx3.1.0 andmeck0.9.2 provided as_checkouts, before each push:rebar3 compilerebar3 ctAll 47 tests passed.(ipdata_SUITE 19, ipdata_app_SUITE 4, ipdata_http_SUITE 24)rebar3 xrefrebar3 dialyzerThe workflow file was additionally checked to parse as YAML with the expected
name, triggers,fail-fast, matrix entries andusesreferences.CI on this pull request:
bea389d(matrix OTP 25 to 29): the OTP 25, 26, 27 and 28 jobs passed compile,rebar3 ct,rebar3 dialyzerandrebar3 xref, with no Node.js deprecation warning in the logs; the OTP 29 job failed inrebar3 ctwhile compiling meck 0.9.2 (see "Not changed"). Thanks tofail-fast: falsethe other four jobs ran to completion instead of being cancelled. The publish job was skipped (not a tag).6b407a4(OTP 29 removed): success. All four jobs (OTP 25 with rebar3 3.24 on ubuntu-24.04, OTP 26 with 3.25, OTP 27 with 3.28, OTP 28 with 3.28) passed; the publish job was skipped (not a tag).OTP 26 to 28 are covered by CI only. The publish job can only be exercised by a
v*tag.🤖 Generated with Claude Code