Overview expiration

Olaf Titz olaf at bigred.inka.de
Thu Apr 13 11:06:08 UTC 2000

Thanks for the explanation, now I know at least where to look :-)
It seems I need groupbaseexpiry false (as I've already suspected), but
I see the following problem:

> groupbaseexpiry false:
>  - run expire to recreate history
>     * this is done class based expiry based on expire.ctl, but
>       for selfexpiry storage method it's ignored and expire checks
>       its existense

This means that history keeps entries longer as it should (based on
nominal rather than actual expire time), but I can live with that as
they _are_ ultimately expired.

>     * for non selfexpiry storage method
>        - expire also purge articles if delayrm not specified
>        - run fastrm if delayrm specified to purge articles
>  - then expireover purges overview data by checking the existense
>    of article

>From the code in tradindexed_expiregroup() I read that this really is
"...checking the existence of history entry". It looks like this
avoids overview entries to stick forever, but it still keeps overview
entries (disk space, shows them to clients) longer - perhaps much
longer - than the article exists.

Perhaps change this (storage/ov3/ov3.c):

  while (ov3search(handle, &artnum, &data, &len, &token, &arrived, &expires)) {
        ah = NULL;
        if (SMprobe(SELFEXPIRE, &token, NULL)) {
            if ((ah = SMretrieve(token, RETR_STAT)) == NULL)
        } else {
            if (!innconf->groupbaseexpiry && !OVhisthasmsgid(data))


  while (ov3search(handle, &artnum, &data, &len, &token, &arrived, &expires)) {
        ah = NULL;
        if (!innconf->groupbaseexpiry || SMprobe(SELFEXPIRE, &token, NULL)) {
            if ((ah = SMretrieve(token, RETR_STAT)) == NULL)

would match your description and be right IMHO.


More information about the inn-workers mailing list