Re: [NNTP] Article Reinstatement

Sabahattin Gucukoglu <[email protected]> Sun, 12 Jun 2011 04:57:40 +0100
Newsgroups gmane.ietf.nntp
Message-ID <[email protected]>
I think we really need an effort to roll all these errata into 3977bis.

On 14 May 2011, at 20:37, Julien =C9LIE wrote:
>>> The low watermark can not decrease.
>>=20
>> Even when the client disconnects?
>=20
> Yes, the low water mark SHOULD NOT decrease.
>=20
> Section 6.1.1.2:
>=20
>   Except when the group is empty and all three numbers are zero,
>   whenever a subsequent GROUP command for the same newsgroup is =
issued,
>   either by the same client or a different client, the reported low
>   water mark in the response MUST be no less than that in any previous
>   response for that newsgroup in this session, and it SHOULD be no =
less
>   than that in any previous response for that newsgroup ever sent to
>   any client.  Any failure to meet the latter condition SHOULD be
>   transient only.  The client may make use of the low water mark to
>   remove all remembered information about articles with lower numbers,
>   as these will never recur.
>=20
>>> It is not an RFC-compliant behaviour. min could not have been set
>>> to 2.

Yes, (as Clive correctly points out) very sensible.  But how do we =
distinguish, inside the server, an article that *might* be reinstated =
and one that just expired?

>> So what does a server do when the lowest-numbered article is pending
>> reinstatement and the client requests it?
>=20
> The news server just answers the article does not exist:
>=20
>   First form (message-id specified)
>     430                   No article with that message-id
>=20
>   Second form (article number specified)
>     423                   No article with that number
>=20
>   Third form (current article number used)
>     423                   No article with that number
>=20
> Note that reinstatement can be done on other articles than the =
lowest-numbered article.

Is there any language which specifically allows the use of these codes =
for reporting an invalid article number because of a (possible) =
reinstatement?  =46rom here it looks like just an implementation detail. =
 I'd otherwise assume that the server simply pretends the article isn't =
valid even though it might be, in the future.  There is a semantic =
difference that the server hides.

>> Looking back at my original message, I see that I made an assumption
>> that the high and low watermarks were always valid articles, but I
>> can see now that the RFC has us covered in the special case of
>> reinstatement.  Good. :-)
>=20
> And also the fact that articles can expire and no longer be present in =
the news spool.  The low water mark does not necessarily point to a =
still retrievable article at the time an ARTICLE command is sent.

That's fine; such an article really would be no longer existent.

> news.test has 5 messages, min=3D1 max=3D5 count=3D5 1. remove #1 min=3D1=

>>> max=3D5 count=3D4 2. reinstate #1 and remove #3 min=3D1 max=3D5 =
count=3D4
>>=20
>> By which we understand that an invalid article response will result
>> from requesting a removed article, yes?
>=20
> Not "invalid", but "inexistent".

Yes, OK, this needs to be rolled into bis.

> So a client that comes between action 1 and action 2 will never see
>>> #1; it won't ask for #1 afterwards because the high water mark is
>>> 5.  The same way as a client coming after action 2 will never see
>>> #3. But is it really a problem?
>>=20
>> Taking into account the use of article reinstatement, probably not in
>> many cases, but you can imagine that if you are a news puller or
>> offline reader, you want to go forward in the article stream and not
>> worry about what came before.  Any circumstance that results in
>> article deletion should be permanent, from the client's perspective.
>> But yes, it's just me, picking nits. :-)
>=20
> It is up to the client to decide how to implement its retrieval of =
articles.  If it assumes the article stream always go forward (which =
happens nearly all the time), then it will miss reinstatements.  That's =
all.  The client just prefers rapidity to exhaustivity (sending a =
LISTGROUP every time, or every n times, it connects to a news group).

Yes, indeed.  This seems to be how I've come away with this.  I used to =
do such exhaustive checks, but noting that reinstated articles were =
removed and then the same numbers used on the reinstatements, I decided =
that the client would benefit from the speed, if we assume the reader is =
acting on behalf of the user at the time the articles are retrieved, =
rather than read (for caching).  This doesn't always work, but it does =
work 99% of the time.  Especially since many servers just don't do the =
reinstatement thing at all.

Cheers,
Sabahattin