Force recount of topics in category after moving them

Can the topic count for a category be forced to update after the topics have been moved to a different category?

I used this method to move topics around after merging two forums, but the counts are still off after 1.5 days.

https://meta.discourse.org/t/bulk-move-many-topics-from-one-category-to-another/38704/2

1 Like

Shouldn’t the category counts rebuild after a day @neil?

It would be nice if they did! However, that didn’t work out for us when we did a similar move.

The following Ruby code, executed in the Rails console, will either fix the issue or set your database on fire :fire:, so backup accordingly :wink:

Category.find_each { |c|
    c.topic_count = Topic.where(category: c).count - 1 # -1 for about post
    c.save!
}

(I’d still love for these to be re-counted occasionally, just as I’d do for post counts :slight_smile:)

3 Likes

Yes this is happenings once a day, doing this to update the counts:

https://github.com/discourse/discourse/blob/master/app/models/category.rb#L137-L151

Seems to work for me.

@fefrei @omarfilip Please go to sidekiq scheduler (/sidekiq/scheduler) and see what the last run of CategoryStats shows.

2 Likes

I’ve triggered mine manually yesterday so the scheduler won’t mean much right now:

The manual triggering of CategoryStats did not change the counts, though.

I ran Felix’s ruby code earlier today and that dropped the topic counts in the empty categories. It did not increase the topic count elsewhere like I thought it would.

2 Likes

I had also triggered that job manually, as far as I recall. It completed successfully, but had no effect.

2 Likes

Mine also ran but didn’t change the counts. I also have one which is -1 as well.

I will run the code from @fefrei and see if that makes a difference.

Edit: running the code worked in the rails console

3 Likes