Skip to content

nntp: preserve checkpoints after failed article fetches - #748

Draft
OllieinCanada wants to merge 1 commit into
sashiko-dev:mainfrom
OllieinCanada:fix/nntp-fetch-integrity
Draft

OllieinCanada wants to merge 1 commit into
sashiko-dev:mainfrom
OllieinCanada:fix/nntp-fetch-integrity

Conversation

@OllieinCanada

Copy link
Copy Markdown
Contributor

Article 1423 receiving status 400 was mistaken for a permanent gap; EOF could return a partial article as success. Use typed status codes and require complete responses, preserving retry checkpoints and genuine-gap handling.

Offline regressions fail before the repair and pass afterward. Rust 1.90.0: make check-pr passed; 1,152 tests passed, two ignored; formatting and three Clippy profiles passed. The inherited RUST_LOG override was unset. No schema changes or historical data rewrites.

DRAFT: required local Sashiko model self-review is incomplete because provider authentication failed. No clean local review is claimed. Keep as draft until the required review completes and findings are addressed.

Base: d7c69ae
Head: 86c8abd

The ingestor identifies missing articles by searching error text for
423. An error for article 1423 therefore looks like a permanent gap even
when the server returned 400. A connection closing before the dot
terminator also returns a partial article as a successful fetch.

Carry the actual ARTICLE status in a typed error and only skip a real
423 below the tip. Reject EOF and unterminated response lines before
restoring the connection. Keep failed fetches out of the ingestion
pipeline so its checkpoint remains retryable.

Add offline transport and checkpoint regressions, including successful
retries and the existing real-gap behavior below and at the server tip.

Fixes: cf9f660 ("Implement basic NNTP Ingestor and Client")
Fixes: 6e2601e ("fix(ingestor): robust NNTP fetching with gap handling")
Signed-off-by: Ollie Slapinski <oliverslapinski@hotmail.com>
@OllieinCanada
OllieinCanada marked this pull request as draft October 26, 2026 03:39
@rgushchin

Copy link
Copy Markdown
Member

Hey! For this and other PRs you posted: please, make it clear what real problem it solves and why it's an important problem to be solved, e.g. how it affects real users. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants