Are post read counts per user accurate?

On our forum, people have read as much as 10k-40k and it seems odd that they have read that much (me myself has read 32.7k) and I’m confused to what that means, does “read” mean the characters? Or the amount of posts if it is the amount of posts, there is something very wrong :joy:

1 Like

It’s the number of posts they have read.

Why would it be wrong? Do you have less than 40k posts? Also beware that we round the number for display. Hover over the number to see the actual number of posts read.

1 Like

Well we have, over the years created 66k posts. But be aware we have migrated over to the new forum and the old posts can be dated back to 2014 so the number of posts are kind of incorrect since they were not created on discourse. Everyone is confused because they didn’t read that many posts. And they say it’s “wrong” I created my account in June this year. And yea I was ok with the number but others were confused.
The first users summary you see is from a user that joined after me. And she did not read any of the old posts that date back to 2014.

The following topic is from 2014:

Did these users jump to the end of long topics? If you jump to the end of a 20,000 post topic, you may get “credit” (by some but not all of our stats) for reading 20k posts depending on how the stat is calculated.

I remember @Mittineague telling us about this.

2 Likes

I didn’t see any example of strangeness here, but I did find one example at SitePoint (need to be logged in to see it)

On this page - Week, Read descending
The SitePoint Forums
there is

Received	Given	Topics	Replies	Viewed	Read	Visits
0		0	0	1	7	25.2k	4

yet that members profile has SeenJun 2 and

6 days visited 19m read time  131 posts read

Profile - Deva23 - The SitePoint Forums

Although a member could conceivably read 25,2K posts over 6 days, being able to do so in 19 minutes time seems unlikely and if they haven’t visited since June why would there be anything other than zeroes for Week?

Because I don’t see similar here, I guessing it’s more a SitePoint thing that it is Discourse.

1 Like

We have never created a 20’000 post topic, also how could we make the forum bot not lock PM’s at 500 posts?
@Mittineague yes, but the strangeness for us is, that users are not always that active & we migrated from another forum, maybe that affects this? Even though all the stats of users reset. But the accrual forum didn’t.

I know when SitePoint imported a lot of old vBulletin content all members post counts were set to zero.

I haven’t done an import of older topics and posts so I don’t know, but maybe a “rebake all” (I don’t know the proper command off-hand) would “pull in” the older posts and add them to the post counts?

Beware, AFAIK “rebake all” will most likely take a long time to run.

It may not be worth trying for something that may not work in adjusting the post counts.

There’s a setting for that in Admin → Settings → Posting

auto close messages post count [default: 500]
Maximum number of posts allowed in a message before it is automatically closed (0 to disable)

auto close topics post count [default: 10000]
Maximum number of posts allowed in a topic before it is automatically closed (0 to disable)

Note that these were added because long topics / messages can be a painful resource hit.

4 Likes

I was able to repro on my localhost

A couple days ago I created ScrollGuy1.
After the account was approved he visited but did not read any topics.

The next day, he went to the 100 post challenge topic.

Being a new member, it opened at the first post.
He did not read any posts, but used the progress slider to jump the the last post, and then promptly left.

Waiting until today to give sidekiq a chance to run jobs, I went to the Users page and ScrollGuy1’s Profile.

It seems the Profile post count is when “the blue (read-state) dot goes away” and the Users post count is using “highest post number seen minus lowest previously unseen post number seen”

5 Likes

Nice site logo btw :laughing:

5 Likes

I had SkipGuy1 (née ScrollGuy1) use a topics replies columns “jump button” to go directly to the last post of a couple of never before entered 38 posts topics.
His post count in the Users page went up 76 posts, his profile post count went up by 2

Chasing down the elusive posts read value was an adventure.
The Users page gets the posts_read value from directory_items
directory_items gets the value from user_visits
The value in users_visits is set from user.rb
user.rb gets the value from topic_users

topic_users has “last read” and “highest seen”. IMHO the code does a great job of keeping track of what is “unread” for me, a great job of remembering where I left off reading in a topic, and a great job of sending me Notifications.
I’m guessing that when posts_read was hooked to this table it was assumed, consciously or otherwise, that members would enter a topic at the beginning and progress sequentially through the posts. That is, “jumps” were unforeseen.

A members profile on the other hand gets the posts_read value from user_stats

I’m thinking it might be a relatively easy fix to have the Users page also use the user_stats table. But I haven’t looked into it enough or tried any code changes yet to know for sure.

3 Likes

I will be undergoing a test from mon-fri on our forums, they will be reading everything for a week.

This is a glitch, no it has nothing to do with “needs approval” or anything.

The “posts read” should be under the “summary” tab.
Mobile view doesn’t have that?

Mobile view does. But this user has an invalid time as to “last seen” since something was posted afterwards.

I don’t know about “last seen” discrepancies.

I’ve been investigating “posts read” discrepancies.

I have this custom CSS on my localhost

/* show post numbers */
a.post-date:after {
  content: " # "attr(data-post-number)" ";
  color: #707070;
  font-weight: bold;
  font-size: 1.1em;
}

Which makes it easier to see differences between post numbers and those that appear in the timeline scroller.

I at first thought it was small action posts that were involved. But I’m now almost 100% certain it’s hidden deleted posts to blame.

Not that big of a deal perhaps for those forums that don’t show post numbers next to posts.

But hidden deleted posts can contribute to discrepancies between the Users page “posts read” and the Profile “posts read” counts.

Hidden deleted posts do not contribute to “read” until they are actually read.
Which sounds fair to me, I didn’t read them if I didn’t read them :wink:

But hidden deleted posts, like skipped posts, are not deducted from the Users page posts read values.

1 Like

I finished the test! And the user has read the total of 4.3k posts! She did not read any older posts, only current posts. The forums is telling me, in the past 7 days 2177 posts have been created. I calculated that there have been 1119 post created over the past 5 days. I think most of the numbers are wrong since I don’t think we would make 1000 posts in the matter of two days!

Is this still the case?

1 Like

I’m seeing this also on /users, huge post read stats for short read time. I imagine it has to do with jump-to or scroll-to-specific-post actions by the user on some super long topics. He’s been on the site for less than a couple days, under 5 min read time, 30 or so topics read, with 20,000 posts read.

Since we’re coming from vBulletin, I imagine many longer-registered users are simply getting back to where they left off.

The user_visits.posts_read values are definitely too high. The user_stats.posts_read_count numbers make more sense although they don’t include private messages while user_visits.posts_read do. The difference between counts with/without PMs isn’t enough to account for the high number of posts_read.

UserStats has a way to recalculate the posts_read number.

But the UserVisits is simply adding a given number of posts.

https://github.com/discourse/discourse/blob/master/app/models/user.rb#L489-L509

My guess is that it’s being called too many times or the num_posts parameter is sometimes counting posts that have already been counted. It doesn’t have an “ensure db consistency” method like other stats do, so counting errors don’t get fixed. That’s my theory right now anyway.

5 Likes

Here’s what I’ve found about these two “posts read” counters.

user_stat.posts_read_count

  • accurately records posts that you see
  • e.g., skipping to the end of a topic does NOT count all posts in the topic as read
  • but doesn’t count private messages (why?)

user_visits.posts_read

  • includes posts that you can’t see (hidden, deleted)
  • includes posts that have been moved in the topic they don’t belong to anymore, and in their new topic (double counting them)
  • skipping to the end of topic counts all posts as read

So the user_visits.posts_read count isn’t accurate at all. Unless I’m missing something, we should only use user_stat.posts_read_count.

7 Likes