[NNTP] Article Numbers Becoming Invalid (RFC 3977)

Russ Allbery rra at stanford.edu
Sun Jan 3 12:03:08 PST 2010


Julien ÉLIE <julien at trigofacile.com> writes:

> OK, I understand.
> However, such an implementation is difficult on distributed servers
> (a common active file or different readers/storage servers).  The reader
> would have to be able, when it receives a GROUP command, to update the
> active file, which can be maintained in another server.

> As the low water mark cannot decrease, LIST ACTIVE, LIST COUNTS, GROUP
> and LISTGROUP have to use similar low water marks.

Yes.  And while for LISTGROUP it would be feasible for a standalone server
to do the same thing, it really isn't feasible to update the low-water
mark in LIST ACTIVE for every cancelled article in the news server
implementations that I'm familiar with.  (They could, of course, be
redesigned to do this, but it doesn't seem like a good use of time and the
problem around distributed servers is very tricky.)

> With the as-if principle, it then allows a server to say the low water
> mark is 10 whereas the first existing article is 12.
> Therefore, after GROUP, 10 is the current article and ARTICLE answers 420.
> As the current article is required to point to the reported low water mark,
> it cannot be set to 12.

Yes, or the result of GROUP would be inconsistent with LIST ACTIVE, and
specifically LIST ACTIVE could report a lower number than a previous GROUP
command, which isn't allowed.  (It's not allowed for reasons that don't
really apply here, but still.)

> Re-reading all uses of the word "invalid" in RFC 3977, it appears that
> it always refers to the state you mention (entering an empty group)
> except for this one:

>   Note that a previously valid article number MAY become invalid if the
>   article has been removed.  A previously invalid article number MAY
>   become valid if the article has been reinstated, but this article
>   number MUST be no less than the reported low water mark for that
>   group.

> The validity of the pointer MAY change.

I wonder if we should file an erratum against that paragraph suggesting a
rewording to use another word than invalid.  Although that paragraph does
talk about the validity of the article number, not the validity of the
current article pointer, so there is a subtle distinction.  But I think
it's too subtle to be clear on a first reading.

I suspect s/invalid/unavailable/ and s/valid/available/ would still be
fairly clear and avoid the ambiguity.

> I think the whole point is that after entering a non-empty group, 420 is
> not a valid answer to ARTICLE without argument.  It should have been 423
> as it was the case in RFC 977.

Well, somewhat more precisely, 420 is only a valid answer to ARTICLE
without an argument if the group was empty at the time of the GROUP
command.  If the group was not empty but the current article is
unavailable, 423 should be used instead.

> And it is also what is implemented in the NNTP reference implementation,
> INN, and probably other news servers.

I'm almost tempted to propose an erratum for this, but changing a return
code is probably more than we really should do in an erratum.

> Maybe it could be a thing to review when, and if, RFC 3977 is moved
> into a draft standard (?)

Yes, definitely.

-- 
Russ Allbery (rra at stanford.edu)             <http://www.eyrie.org/~eagle/>


More information about the ietf-nntp mailing list