• INN Issue - SERVER throttle File exists writing SMstore file -- throttling

    From Jesse Rehmer@jesse.rehmer@blueworldhosting.com to news.software.nntp on Thu Sep 4 15:05:28 2025
    From Newsgroup: news.software.nntp

    While injecting articles INN will suddenly use 100% CPU and stop logging
    for several minutes. This has happened a few times and usually recovers on
    its own after 5-15 minutes. This morning the server started to throttle
    and wouldn't come out of that state.

    In news.notice we see the reason:

    Sep 4 06:28:38 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47149 to /usr/ local/news/spool/articles/rec/arts/comics/info/296: File exists
    Sep 4 06:28:38 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:33:47 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/298: File exists
    Sep 4 06:33:47 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:33:47 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47152 to /usr/ local/news/spool/articles/rec/arts/comics/info/300: File exists
    Sep 4 06:33:56 spool1 innd[43822]: SERVER throttle File exists writing SMstore file -- throttling
    Sep 4 06:33:56 spool1 innd[43822]: SERVER cant store article: File exists

    In the past I added newsgroups, which no longer exist in the Big 8, and injected articles to those groups. At the time I did not have control.ctl configured not to process rmgroup commands, and groups got removed through processing checkgroups. It was after re-adding these groups and attempting
    to inject articles to them I see the issue.

    I'm not sure what the 'right' approach is to correcting. What I see is articles arrive which are cross-posted to one of the groups that had been removed and re-added, and the X-Ref on the new article is using an article number that already exists in the cross-posted group.

    I don't believe actions such as rebuilding the overview would do anything
    with the XRef header, so is my only option forward to start fresh with and re-feed the articles to a new box to generate correct XRef headers?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Russ Allbery@eagle@eyrie.org to news.software.nntp on Thu Sep 4 09:07:42 2025
    From Newsgroup: news.software.nntp

    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    While injecting articles INN will suddenly use 100% CPU and stop logging
    for several minutes. This has happened a few times and usually recovers
    on its own after 5-15 minutes.

    Do you use Perl filters? An out-of-control regex would be my first
    suspect since they're prone to combinatorial explosion if written poorly.
    INN under normal operations should not use much CPU. It's usually
    constrained by disk I/O.

    Sep 4 06:28:38 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47149 to /usr/ local/news/spool/articles/rec/arts/comics/info/296: File exists
    Sep 4 06:28:38 spool1 innd[43822]: SERVER cant store article: File exists Sep 4 06:33:47 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/298: File exists
    Sep 4 06:33:47 spool1 innd[43822]: SERVER cant store article: File exists Sep 4 06:33:47 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47152 to /usr/ local/news/spool/articles/rec/arts/comics/info/300: File exists
    Sep 4 06:33:56 spool1 innd[43822]: SERVER throttle File exists writing SMstore file -- throttling
    Sep 4 06:33:56 spool1 innd[43822]: SERVER cant store article: File exists

    In the past I added newsgroups, which no longer exist in the Big 8, and injected articles to those groups. At the time I did not have control.ctl configured not to process rmgroup commands, and groups got removed through processing checkgroups. It was after re-adding these groups and attempting to inject articles to them I see the issue.

    When you delete a group, you need to delete all the files out of the spool
    for that group before you re-add the group. That's because deleting the
    group removes the entry from the active file, which in turn discards the article number high water mark. When you re-add the group, article
    numbering starts over at 1, so if you leave stray article files behind in
    the spool, you will encounter this problem.

    Normally nightly expire deletes all the articles for removed groups. I'm guessing that you have this turned off for some reason? INN with
    group-based expire (which drives expire based on the overview) only gets
    one chance to do that because on the next run of expire it will clean up
    all of the overview and then lose track of the files in the file system entirely. Normally this will also trigger deletion of all of the articles.

    I'm not sure what the 'right' approach is to correcting.

    If you don't care about the old articles, the fix is easy: delete the
    stray article files that should have been deleted when the group was
    deleted, and figure out why expire isn't deleting articles from removed
    groups. But I'm guessing that the whole point is that you don't want to
    delete any articles.

    Rebuilding history and overview from the spool will recreate the data structures for the files that weren't deleted, but of course is a very intensive operation.

    The other option would be to manually clean up the leftover files in the
    spool and then refeed the entire intended contents of the newsgroup back
    into INN in order. If you were going to do that, you probably want an
    external complete copy of the intended group contents, and then delete the group again, purge all of the overview for that group, delete all the
    articles out of the spool for that group (in other words, do all the
    things that expireover would normally do with group-based expire after the group was deleted), and then recreate the group (with article numbers
    starting from 1 again) and re-feed all of the articles back into the
    group. This is going to be quite annoying to do with crossposted articles, though, since presumably they already exist in the spool in the other
    groups to which they were crossposted and you don't want them added back
    to the other groups a second time. I'm not sure I see a good way to fix
    this and preserve crossposting. I think you'd have to scrub the articles
    you're going to re-feed to remove the Xref information for other groups
    and then turn on xrefslave to prevent them from being crossposted when you refeed them. Maybe there's some other approach that I'm missing.

    The hard part with a manual fix is that you now have a bit of a mess
    because the lower-numbered articles in that group have arrived after higher-numbered articles and all the articles from before the group was
    deleted probably aren't listed in history properly any more because the
    group was deleted. You could just fix the high-water mark and that would prevent the article numbers from conflicting and is easy to do, but the
    old articles from before the group was deleted will continue to be
    inaccessible and not tracked by INN.

    What I see is articles arrive which are cross-posted to one of the
    groups that had been removed and re-added, and the X-Ref on the new
    article is using an article number that already exists in the
    cross-posted group.

    I doubt the problem is specific to crossposts. Posts only to the recreated group will also have the same problem. The newly assigned article numbers
    based on the active file information are conflicting with stray files left
    over in the news spool that INN has forgotten about due to the prior
    removal of the group.
    --
    Russ Allbery (eagle@eyrie.org) <https://www.eyrie.org/~eagle/>

    Please post questions rather than mailing me directly.
    <https://www.eyrie.org/~eagle/faqs/questions.html> explains why.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Russ Allbery@eagle@eyrie.org to news.software.nntp on Thu Sep 4 10:04:04 2025
    From Newsgroup: news.software.nntp

    Russ Allbery <eagle@eyrie.org> writes:
    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    While injecting articles INN will suddenly use 100% CPU and stop logging
    for several minutes. This has happened a few times and usually recovers
    on its own after 5-15 minutes.

    Do you use Perl filters? An out-of-control regex would be my first
    suspect since they're prone to combinatorial explosion if written poorly.
    INN under normal operations should not use much CPU. It's usually
    constrained by disk I/O.

    Oh, also, I should say explicitly that I don't think these two problems
    are related. Conflicting article numbers in tradspool storage should
    result in an immediate throttle, and I don't see any obvious reason why it would cause a CPU spike. It's also not a recoverable problem; I believe
    INN always throttles in that situation until an administrator unthrottles
    it.
    --
    Russ Allbery (eagle@eyrie.org) <https://www.eyrie.org/~eagle/>

    Please post questions rather than mailing me directly.
    <https://www.eyrie.org/~eagle/faqs/questions.html> explains why.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Jesse Rehmer@jesse.rehmer@blueworldhosting.com to news.software.nntp on Thu Sep 4 17:33:45 2025
    From Newsgroup: news.software.nntp

    On Thu, 04 Sep 2025 10:04:04 -0700, Russ Allbery wrote:

    Russ Allbery <eagle@eyrie.org> writes:
    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    While injecting articles INN will suddenly use 100% CPU and stop
    logging for several minutes. This has happened a few times and usually
    recovers on its own after 5-15 minutes.

    Do you use Perl filters? An out-of-control regex would be my first
    suspect since they're prone to combinatorial explosion if written
    poorly.
    INN under normal operations should not use much CPU. It's usually
    constrained by disk I/O.

    Oh, also, I should say explicitly that I don't think these two problems
    are related. Conflicting article numbers in tradspool storage should
    result in an immediate throttle, and I don't see any obvious reason why
    it would cause a CPU spike. It's also not a recoverable problem; I
    believe INN always throttles in that situation until an administrator unthrottles it.

    It didn't throttle for over an hour as seen from the full output of
    news.err below. It ran into the error at roughly 5:00am but did not
    throttle until 6:33am.

    Sep 4 04:59:51 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/128: File exists
    Sep 4 04:59:51 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:00:02 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47038 to /usr/ local/news/spool/articles/rec/arts/comics/info/135: File exists
    Sep 4 05:00:02 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:03:18 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47045 to /usr/ local/news/spool/articles/rec/arts/comics/info/144: File exists
    Sep 4 05:03:18 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:05:42 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47051 to /usr/ local/news/spool/articles/rec/arts/comics/info/152: File exists
    Sep 4 05:05:42 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:07:11 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/157: File exists
    Sep 4 05:07:11 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:10:22 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/164: File exists
    Sep 4 05:10:22 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:10:25 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/alt/comics/fandom/564 to /usr/local/news/spool/ articles/rec/arts/comics/info/167: File exists
    Sep 4 05:10:25 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:13:30 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/175: File exists
    Sep 4 05:13:30 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:17:09 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/176: File exists
    Sep 4 05:17:09 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:25:53 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47060 to /usr/ local/news/spool/articles/rec/arts/comics/info/179: File exists
    Sep 4 05:25:53 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:25:54 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47064 to /usr/ local/news/spool/articles/rec/arts/comics/info/183: File exists
    Sep 4 05:25:54 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:28:13 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47066 to /usr/ local/news/spool/articles/rec/arts/comics/info/186: File exists
    Sep 4 05:28:13 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 05:43:07 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/221: File exists
    Sep 4 05:43:07 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:02:53 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47094 to /usr/ local/news/spool/articles/rec/arts/comics/info/226: File exists
    Sep 4 06:02:53 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:04:19 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47097 to /usr/ local/news/spool/articles/rec/arts/comics/info/229: File exists
    Sep 4 06:04:19 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:12:21 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/263: File exists
    Sep 4 06:12:21 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:13:54 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47128 to /usr/ local/news/spool/articles/rec/arts/comics/info/267: File exists
    Sep 4 06:13:54 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:13:54 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47130 to /usr/ local/news/spool/articles/rec/arts/comics/info/269: File exists
    Sep 4 06:13:54 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:28:38 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47149 to /usr/ local/news/spool/articles/rec/arts/comics/info/296: File exists
    Sep 4 06:28:38 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:33:47 spool1 innd[43822]: tradspool: could not open /usr/local/ news/spool/articles/rec/arts/comics/info/298: File exists
    Sep 4 06:33:47 spool1 innd[43822]: SERVER cant store article: File exists
    Sep 4 06:33:47 spool1 innd[43822]: tradspool: could not symlink /usr/ local/news/spool/articles/rec/arts/comics/marvel/xbooks/47152 to /usr/ local/news/spool/articles/rec/arts/comics/info/300: File exists
    Sep 4 06:33:56 spool1 innd[43822]: SERVER throttle File exists writing SMstore file -- throttling
    Sep 4 06:33:56 spool1 innd[43822]: SERVER cant store article: File exists
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Jesse Rehmer@jesse.rehmer@blueworldhosting.com to news.software.nntp on Thu Sep 4 17:44:24 2025
    From Newsgroup: news.software.nntp

    On Thu, 04 Sep 2025 09:07:42 -0700, Russ Allbery wrote:

    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    While injecting articles INN will suddenly use 100% CPU and stop
    logging for several minutes. This has happened a few times and usually
    recovers on its own after 5-15 minutes.

    Do you use Perl filters? An out-of-control regex would be my first
    suspect since they're prone to combinatorial explosion if written
    poorly. INN under normal operations should not use much CPU. It's
    usually constrained by disk I/O.

    I do use Perl and Python filters. Though, I don't think that's the cause
    based on the history of the server and the group's experiencing the issue (groups deleted, articles remained, groups recreated, not running expire).

    I rarely run expire/expireover on this box, as I don't intend to remove
    any articles, but have a few times in between the time the group was
    removed and re-added.

    Since the issue involves tradspool and Xref problems, would a feasible workaround be to stand up a new box (with CNFS this time) and re-feed all articles to the new box? Wouldn't that generate new/correct Xref headers
    if I don't use xrefslave?


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Jesse Rehmer@jesse.rehmer@blueworldhosting.com to news.software.nntp on Thu Sep 4 17:46:02 2025
    From Newsgroup: news.software.nntp

    On Thu, 4 Sep 2025 17:33:45 -0000 (UTC), Jesse Rehmer wrote:

    On Thu, 04 Sep 2025 10:04:04 -0700, Russ Allbery wrote:

    Russ Allbery <eagle@eyrie.org> writes:
    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    While injecting articles INN will suddenly use 100% CPU and stop
    logging for several minutes. This has happened a few times and
    usually recovers on its own after 5-15 minutes.

    Do you use Perl filters? An out-of-control regex would be my first
    suspect since they're prone to combinatorial explosion if written
    poorly.
    INN under normal operations should not use much CPU. It's usually
    constrained by disk I/O.

    Oh, also, I should say explicitly that I don't think these two problems
    are related. Conflicting article numbers in tradspool storage should
    result in an immediate throttle, and I don't see any obvious reason why
    it would cause a CPU spike. It's also not a recoverable problem; I
    believe INN always throttles in that situation until an administrator
    unthrottles it.

    It didn't throttle for over an hour as seen from the full output of
    news.err below. It ran into the error at roughly 5:00am but did not
    throttle until 6:33am.

    Forgot to mention that according to Cacti graphs, it was using 100% CPU
    from the time it first encountered the error at 5:00am and didn't stop
    until the throttle at 6:33am.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Russ Allbery@eagle@eyrie.org to news.software.nntp on Thu Sep 4 11:51:34 2025
    From Newsgroup: news.software.nntp

    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    It didn't throttle for over an hour as seen from the full output of
    news.err below. It ran into the error at roughly 5:00am but did not
    throttle until 6:33am.

    Oh, I see, it doesn't throttle until there are 50 failures.

    That still doesn't explain what it was doing with the CPU. This sort of
    failure really shouldn't consume any meaningful CPU. INN just rejects the article and moves on with its life.
    --
    Russ Allbery (eagle@eyrie.org) <https://www.eyrie.org/~eagle/>

    Please post questions rather than mailing me directly.
    <https://www.eyrie.org/~eagle/faqs/questions.html> explains why.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Russ Allbery@eagle@eyrie.org to news.software.nntp on Thu Sep 4 11:52:14 2025
    From Newsgroup: news.software.nntp

    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    Since the issue involves tradspool and Xref problems, would a feasible workaround be to stand up a new box (with CNFS this time) and re-feed
    all articles to the new box? Wouldn't that generate new/correct Xref
    headers if I don't use xrefslave?

    Yes.
    --
    Russ Allbery (eagle@eyrie.org) <https://www.eyrie.org/~eagle/>

    Please post questions rather than mailing me directly.
    <https://www.eyrie.org/~eagle/faqs/questions.html> explains why.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Billy G.@contact-5c2e-000@pugleaf.net to news.software.nntp on Thu Sep 4 20:02:41 2025
    From Newsgroup: news.software.nntp

    On 04.09.25 18:44, Jesse Rehmer wrote:
    I rarely run expire/expireover on this box, as I don't intend to remove
    any articles,...
    I remember this can be a performance problem with massive imports.
    Expire adjusts the history hash db size and performance suffers if you
    import more than db size supports because it overflows.

    makehistory -s size
    size new history database for approximately size entries
    --
    .......
    Billy G. (go-while)
    https://pugleaf.net
    @Newsgroup: rocksolid.nodes.help
    irc.pugleaf.net:6697 (SSL) #lounge
    discord: https://discord.gg/rECSbHHFzp
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Jesse Rehmer@jesse.rehmer@blueworldhosting.com to news.software.nntp on Thu Sep 4 19:02:57 2025
    From Newsgroup: news.software.nntp

    On Thu, 04 Sep 2025 09:07:42 -0700, Russ Allbery wrote:

    When you delete a group, you need to delete all the files out of the
    spool for that group before you re-add the group. That's because
    deleting the group removes the entry from the active file, which in turn discards the article number high water mark. When you re-add the group, article numbering starts over at 1, so if you leave stray article files behind in the spool, you will encounter this problem.

    Normally nightly expire deletes all the articles for removed groups. I'm guessing that you have this turned off for some reason? INN with
    group-based expire (which drives expire based on the overview) only gets
    one chance to do that because on the next run of expire it will clean up
    all of the overview and then lose track of the files in the file system entirely. Normally this will also trigger deletion of all of the
    articles.

    Thank you for all the advice and knowledge. Coming back to this, I don't
    think I knew that you have to/should delete articles from a group being rmgroup'd. Probably because I didn't remove them manually and haven't
    explored the documentation around this area.

    What would happen if groups are removed and re-added with CNFS buffers?
    When you re-add the groups would you need to immediately rebuild the
    overview?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Russ Allbery@eagle@eyrie.org to news.software.nntp on Thu Sep 4 12:11:47 2025
    From Newsgroup: news.software.nntp

    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    What would happen if groups are removed and re-added with CNFS buffers?
    When you re-add the groups would you need to immediately rebuild the overview?

    CNFS effectively deletes all of the articles as soon as you rmgroup the
    group, I think. The data is still in the buffer, but the pointers to it
    are removed. So this works as if the group were removed and readded after deleting all of the articles: Article numbers start at 1 again, and the
    old articles aren't accessible.

    The problem you ran into is specific to tradspool. It most commonly
    happens when a group is deleted and immediately recreated (because the
    deletion was an accident), or in some sorts of crash situations. See:

    https://www.eyrie.org/~eagle/faqs/inn.html#S4.4

    I was thinking about whether that first solution might work in your
    situation but I think it might not because the group was deleted entirely
    and therefore the articles may have been removed from history, so the data structures may still be inconsistent if you only rebuild overview for that group. Might be worth a try, though, since it's a much lighter-weight
    solution. (Note that this won't fix the problem that newer articles have
    lower article numbers than older articles, though.)
    --
    Russ Allbery (eagle@eyrie.org) <https://www.eyrie.org/~eagle/>

    Please post questions rather than mailing me directly.
    <https://www.eyrie.org/~eagle/faqs/questions.html> explains why.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Jesse Rehmer@jesse.rehmer@blueworldhosting.com to news.software.nntp on Thu Sep 4 20:41:47 2025
    From Newsgroup: news.software.nntp

    On Thu, 04 Sep 2025 12:11:47 -0700, Russ Allbery wrote:

    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:

    What would happen if groups are removed and re-added with CNFS buffers?
    When you re-add the groups would you need to immediately rebuild the
    overview?

    CNFS effectively deletes all of the articles as soon as you rmgroup the group, I think. The data is still in the buffer, but the pointers to it
    are removed. So this works as if the group were removed and readded
    after deleting all of the articles: Article numbers start at 1 again,
    and the old articles aren't accessible.

    If this same situation happened with CNFS, where you remove a group then re-add it... would rebuilding the history/overview find those articles if
    the pointers to them are gone, or would it only find articles that were crossposted to other groups that weren't deleted?

    Another scenario... Let's say comp.sys.apple existed with articles
    crossposted to comp.sys.apple2. I remove comp.sys.apple. The crossposted articles would still be accessible at this point.

    If I did *not* rebuild the overview data, and re-add comp.sys.apple and
    inject articles posted to comp.sys.apple2 that are also crossposted to comp.sys.apple, what happens on CNFS? I assume that the article would
    still be stored, but potentially with incorrect Xref information regarding
    the crossposted group? If you got into that state with CNFS, is it
    fixable?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Russ Allbery@eagle@eyrie.org to news.software.nntp on Thu Sep 4 13:57:44 2025
    From Newsgroup: news.software.nntp

    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:
    On Thu, 04 Sep 2025 12:11:47 -0700, Russ Allbery wrote:

    CNFS effectively deletes all of the articles as soon as you rmgroup the
    group, I think. The data is still in the buffer, but the pointers to it
    are removed. So this works as if the group were removed and readded
    after deleting all of the articles: Article numbers start at 1 again,
    and the old articles aren't accessible.

    If this same situation happened with CNFS, where you remove a group then re-add it... would rebuilding the history/overview find those articles if the pointers to them are gone, or would it only find articles that were crossposted to other groups that weren't deleted?

    No, I think there aren't any tools with INN that would really recover
    those articles except maybe some low-level stuff that would let you
    extract the content.

    The Xref headers in cross-posted articles would continue to be wrong,
    because they would point to non-existing articles. I think rebuilding
    overview might do something rather suboptimal and add random overview
    entries for the wrong numbering scheme that would then potentially
    conflict with later articles.

    Another scenario... Let's say comp.sys.apple existed with articles crossposted to comp.sys.apple2. I remove comp.sys.apple. The crossposted articles would still be accessible at this point.

    I think that's correct.

    If I did *not* rebuild the overview data, and re-add comp.sys.apple and inject articles posted to comp.sys.apple2 that are also crossposted to comp.sys.apple, what happens on CNFS?

    You get duplicate copies of the articles with new numbers in
    comp.sys.apple2.

    I assume that the article would still be stored, but potentially with incorrect Xref information regarding the crossposted group?

    The new article will have correct Xref information because that's replaced
    when the article is injested (assuming you're not using xrefslave). The
    old copy of the article will have incorrect Xref information forever.
    --
    Russ Allbery (eagle@eyrie.org) <https://www.eyrie.org/~eagle/>

    Please post questions rather than mailing me directly.
    <https://www.eyrie.org/~eagle/faqs/questions.html> explains why.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Jesse Rehmer@jesse.rehmer@blueworldhosting.com to news.software.nntp on Thu Sep 4 21:26:00 2025
    From Newsgroup: news.software.nntp

    On Thu, 04 Sep 2025 13:57:44 -0700, Russ Allbery wrote:

    If I did *not* rebuild the overview data, and re-add comp.sys.apple and
    inject articles posted to comp.sys.apple2 that are also crossposted to
    comp.sys.apple, what happens on CNFS?

    You get duplicate copies of the articles with new numbers in
    comp.sys.apple2.

    Would those duplicate articles create a problem for tools like
    makehistory?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Russ Allbery@eagle@eyrie.org to news.software.nntp on Thu Sep 4 14:37:15 2025
    From Newsgroup: news.software.nntp

    Jesse Rehmer <jesse.rehmer@blueworldhosting.com> writes:
    On Thu, 04 Sep 2025 13:57:44 -0700, Russ Allbery wrote:

    You get duplicate copies of the articles with new numbers in
    comp.sys.apple2.

    Would those duplicate articles create a problem for tools like
    makehistory?

    The new ones, no. The old ones, maybe? I don't remember exactly how
    rebuilding overview works with CNFS, but I think it may scrape the Xref
    headers out of all of the articles in the CNFS buffers, so it may honor
    the old Xref headers.

    This is all from memory, though, and I haven't gone and traced the code to figure out exactly what it would do.
    --
    Russ Allbery (eagle@eyrie.org) <https://www.eyrie.org/~eagle/>

    Please post questions rather than mailing me directly.
    <https://www.eyrie.org/~eagle/faqs/questions.html> explains why.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From aw@aw@somewhere.invalid (Adam W.) to news.software.nntp on Fri Sep 5 12:17:07 2025
    From Newsgroup: news.software.nntp

    Russ Allbery <eagle@eyrie.org> wrote:

    If I did *not* rebuild the overview data, and re-add comp.sys.apple and
    inject articles posted to comp.sys.apple2 that are also crossposted to
    comp.sys.apple, what happens on CNFS?

    You get duplicate copies of the articles with new numbers in
    comp.sys.apple2.

    Wouldn't they be rejected based on history? They're still in c.s.apple2
    after all...

    Just thinking loud.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Russ Allbery@eagle@eyrie.org to news.software.nntp on Fri Sep 5 10:38:33 2025
    From Newsgroup: news.software.nntp

    aw@somewhere.invalid (Adam W.) writes:
    Russ Allbery <eagle@eyrie.org> wrote:

    If I did *not* rebuild the overview data, and re-add comp.sys.apple and >>> inject articles posted to comp.sys.apple2 that are also crossposted to
    comp.sys.apple, what happens on CNFS?

    You get duplicate copies of the articles with new numbers in
    comp.sys.apple2.

    Wouldn't they be rejected based on history? They're still in c.s.apple2 after all...

    Just thinking loud.

    Oh, right, yes, good point! I was making the assumption that all the
    history entries for the old articles would be removed, but indeed if only
    the non-crosspost ones were removed, the crossposts would be rejected.

    I think that would result in a slightly different data inconsistency where
    the crossposted messages don't appear in the recreated comp.sys.apple
    because the old overview was dropped and nothing would re-add the entries.

    (Strictly from a data modeling perspective, netnews would be a lot simpler
    if crossposts had never been allowed. Then every group could be treated as
    an independent entity, which would make all sorts of data manipulation way easier.)
    --
    Russ Allbery (eagle@eyrie.org) <https://www.eyrie.org/~eagle/>

    Please post questions rather than mailing me directly.
    <https://www.eyrie.org/~eagle/faqs/questions.html> explains why.
    --- Synchronet 3.21a-Linux NewsLink 1.2