This has been bugging me so much I've investigated further and found the cause. When a new forum post is saved it is indexed twice because first in EditPost.aspx.cs we do this in the handler:
if((thread.PostId == -1)||(userIsAllowedToUpdateThisPost))
(which in turn leads to this.CreatePost(); which leads to OnContentChanged(e); > indexBuilder.ContentChangedHandler(sender, e); >
newID = DBIndexingQueue.Create(
(and we see a row created in table [mp_IndexingQueue]
Then we continue through the handler to this
thread.NotificationSent = true;
// produces duplicate indexing CF
which leads to a second indexing. Commenting out the last line above prevents the duplication.
I think one of many possible fixes might be to a) remove this section from CreatePost()... (in ForumThread.cs)
ContentChangedEventArgs e = new ContentChangedEventArgs();
and b) take this line outside its condition so it always runs ... (in EditPost.aspx.cs):
This should ensure every new post gets indexed, but only once. But it's all quite complicated and I might have got this wrong!