You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v0.26.3 — -R works again against current rq and keeps rq's hedges; remote schemas say their cache age, fall back to a stale copy with disclosure, and retry transient failures; corrected queries no longer take a minute.
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
A live schema whose refetch fails is answered from the expired copy
instead of failing — when the endpoint is down, times out, answers 5xx, or
answers with a GraphQL errors body, and a cached copy exists (also under --refresh). stderr says what failed and how old the copy is, even under -q; JSON source adds "stale": true and error. Exit 0: an answer
was given. A 401/403 never falls back, and with no copy the fetch fails as
before.
An answer from a cached copy of a live schema says how old it is: from a copy of <url> cached 41m ago — --refresh to refetch on stderr
(silenced by -q), and a source object (url, cached: true, age_secs) on every JSON row and on the -Jno_matches row. Rows from a
file or a fresh fetch are unchanged.
A miss from a remembered discovery says so: no matches for "x" in schema.graphql (remembered from an earlier walk — --refresh re-walks), and
the -J miss row carries source: {path, discovered: true, remembered}
whenever gqls picked the schema.
A live fetch retries a transient failure. A refused or dropped
connection, a 502/503/504, or a 429 (honouring Retry-After up to 5 s) is
tried up to three times in all, with a short backoff, inside a 40 s budget —
so a hung endpoint costs one timeout, not three. A 4xx refusal and a GraphQL errors body are never retried. -v says what was retried and why.
A fetch still running after 2 s says so (still waiting on <url>); a
hung endpoint was silent for 30.
-R passes rq's hedges through. A class declared in several places shows also in <file:line> and carries declarations/also_in in JSON. A hit
from a checkout rq is still indexing says rq still indexing: N of M files
on stderr and carries rq's warming object; a hit rq held back as
provisional (rq's exit 2) is kept, marked (provisional), with "provisional": true on every JSON row. Exit 0 — it's an answer.
Changed
--profile times the explain check and the miss diagnosis as their own
phases (explain check, miss diagnosis); output is now just writing
the results, which it was always presumed to be.
-R -j renames confidence to rq_confidence. It was rq's confidence
in the name match, so a (guess) rq matched exactly read as "confidence": 1.0. gqls's own verdict is loose. A script reading confidence must read rq_confidence — though against rq 0.52.0 or newer -R failed outright, so no current setup was producing the old field.
-R exits 1 when rq is still indexing and found nothing, with rq's
progress and hint, instead of exiting 0 under a no code definition found
that read as definitive. A miss on a finished index still exits 0.
A failing rq is reported in its own words — its JSON error and its
exit code — rather than the first stderr line beside exit Some(64).
Fixed
A failed fetch says what happened once.introspecting URL: URL: Network Error: Network Error: … reads introspecting URL: couldn't connect (Connection refused), and an HTTP failure names its status and the
server's GraphQL error message (HTTP 401 Unauthorized: bad token).
A query correcting to a common field name no longer takes a minute.
Deciding whether a query names one record re-scanned every name in the
schema once per record it corrected to: on a 48k-record schema, emial
(→ 2,811 email fields) took about 60 s and ñame 77 s. It is asked once
per query now, and the check allocates nothing for ASCII names and runs in
parallel — emial takes about 16 ms. Every result is unchanged.
-R works again. It passed rq --no-record, which rq removed in 0.52.0,
so every resolve against a current rq failed with unexpected argument.
gqls now passes rq only --ndjson --limit 10 (and --verbose under -v),
and a test drives the installed rq when there is one.