XOVER ranges

Jeffrey M. Vinocur jeff at litech.org
Fri Apr 4 03:11:06 UTC 2008

Hi all --

I'm trying to track down some weird bug with garbled XOVER output.  After 
staring at tdx-data.c for a really long time, I thought it might be due to 
handling of the case where the high watermark is stale (noted when the 
requested article range exceeds it) and the overview file is re-mmap()ed 
to get at the rest of it.

But in the process of trying to debug it, I found that CMDgetrange() does:

    if (rp->High > ARThigh)
        rp->High = ARThigh;
    if (rp->Low < ARTlow)
        rp->Low = ARTlow;

which is to say, it revises the user's requested article range not to 
exceed its internal (and possibly stale) idea of the high watermark.

So I'm writing to ask, what do we think of this behavior?

It means if the client enters the group, then new articles arrive, then 
the client does XOVER 1-, it does not receive info on the new articles.  
More disturbingly, if the client does XOVER 1-100, and the old high 
watermark was 80, the response reads "224 1-100 fields follow" but then 
only data on articles up to 80 is supplied.  I'm not sure that any sane 
client would ever actually encounter the latter, since it will also have a 
stale idea of the high watermark until it reenters the group.

I see three options:

  (1) Ignore it
  (2) Change CMDgetrange() to not adjust the watermarks
  (3) Change the XOVER response line to echo back the adjusted watermarks
      rather than the originals


P.S.  Russ, any thoughts about my original supposition?  

      I'm still worried there might be a bug lurking in the
      unmap_file/map_file that can take place in the middle of the search,
      since SendIOv may still have references to data in the old location.

Jeffrey M. Vinocur
jeff at litech.org

More information about the inn-workers mailing list