Context
Daily relay-directory-backfill in gr-prod repeatedly marks some relay/kind cursors as retry_later for permanent kind rejections, which adds churn every 06:00 UTC run without ever progressing.
Observed (stable across recent daily runs):
closed:ERROR: bad req: filter validation failed: kind not allowed: 10011 on wss://relay.us.whitenoise.chat and wss://relay.eu.whitenoise.chat
closed:kinds not supported on wss://relay.fountain.fm (kind 10011)
Transient failures (timeout, auth, etc.) should keep using retry_later.
Proposal
When a relay closes a REQ because the kind is permanently unsupported (kind not allowed / kinds not supported):
- Checkpoint the cursor as terminal (
status: "unsupported", completed: true) instead of retry_later
- Skip that cursor on resume (same terminal path as
complete)
- Preserve the original
lastReason for observability
Acceptance
Context
Daily
relay-directory-backfillingr-prodrepeatedly marks some relay/kind cursors asretry_laterfor permanent kind rejections, which adds churn every 06:00 UTC run without ever progressing.Observed (stable across recent daily runs):
closed:ERROR: bad req: filter validation failed: kind not allowed: 10011onwss://relay.us.whitenoise.chatandwss://relay.eu.whitenoise.chatclosed:kinds not supportedonwss://relay.fountain.fm(kind10011)Transient failures (
timeout, auth, etc.) should keep usingretry_later.Proposal
When a relay closes a REQ because the kind is permanently unsupported (
kind not allowed/kinds not supported):status: "unsupported",completed: true) instead ofretry_latercomplete)lastReasonfor observabilityAcceptance
retry_laterfor the relays aboveunsupported(or skip) rather than re-querying those cursors