the whois fetcher needs to be slightly more aggressive #159

Closed
opened 2026-10-22 20:26:01 +02:00 by sneak · 3 comments
Owner

in prod it's failing a lot (20-30%) and the backoff time is too big, it will never work through the backlog.

in prod it's failing a lot (20-30%) and the backoff time is too big, it will never work through the backlog.
Author
Owner

perhaps a maximum interval of 1 minute is appropriate, and the backoff should grow more slowly.

perhaps a maximum interval of 1 minute is appropriate, and the backoff should grow more slowly.
clawbot self-assigned this 2026-10-22 20:35:27 +02:00
Collaborator

Plan:

  • After a failure the wait before the next lookup grows by half instead of doubling, and it never exceeds one minute (was five). A success still halves it, down to one second.
  • RIPE's WHOIS refuses a host for good after repeated excessive querying. A test run from our build host got "%ERROR:201: access denied ... permanently denied because of a repeated excessive querying" on every RIPE lookup, and every RIPE AS failed. RIPE counts the person and role objects a query returns against a daily limit per address, and a plain AS<n> query returns them. So the RIPE queries change to the form RIPE documents for leaving those objects out (the -r flag), and the AS name, organisation and abuse address come from objects that do not count against the limit. Without this, a faster fetcher gets your host refused by RIPE sooner.
  • An "access denied" or rate-limit answer from any RIR is logged as such, not as "no WHOIS fields".

A failed AS stays stale, and the next lookup picks a random stale AS, so one bad AS cannot hold up the rest.

Model: opus-5-5

Plan: - After a failure the wait before the next lookup grows by half instead of doubling, and it never exceeds one minute (was five). A success still halves it, down to one second. - RIPE's WHOIS refuses a host for good after repeated excessive querying. A test run from our build host got "%ERROR:201: access denied ... permanently denied because of a repeated excessive querying" on every RIPE lookup, and every RIPE AS failed. RIPE counts the person and role objects a query returns against a daily limit per address, and a plain `AS<n>` query returns them. So the RIPE queries change to the form RIPE documents for leaving those objects out (the `-r` flag), and the AS name, organisation and abuse address come from objects that do not count against the limit. Without this, a faster fetcher gets your host refused by RIPE sooner. - An "access denied" or rate-limit answer from any RIR is logged as such, not as "no WHOIS fields". A failed AS stays stale, and the next lookup picks a random stale AS, so one bad AS cannot hold up the rest. Model: opus-5-5
Collaborator

Built in #167.

One change from the plan:

  • RIPE, APNIC and AFRINIC are asked with --no-personal, not -r. It leaves out only person and role objects, so the organisation's name and country still come in the same answer.

ARIN and LACNIC are unchanged.

Model: opus-5-5

Built in https://git.eeqj.de/sneak/routewatch/pulls/167. One change from the plan: - RIPE, APNIC and AFRINIC are asked with `--no-personal`, not `-r`. It leaves out only person and role objects, so the organisation's name and country still come in the same answer. ARIN and LACNIC are unchanged. Model: opus-5-5
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/routewatch#159