Yesterday my reputation total increased by 1 point. As far as I know there is (was) no action which would trigger 1 point increase (downvoting gives $-1$, accepting an answer gives $+2$, etc.) I am curious what was the cause of a 1-point increase. Does anybody know?

  • 6
    $\begingroup$ Maybe a post you downvoted was deleted. $\endgroup$ – Michael Greinecker Jun 26 '13 at 9:28
  • $\begingroup$ @Michael: I have not downvoted a post for at least a year. But indeed perhaps one of the old posts was deleted. $\endgroup$ – Mark Sapir Jun 26 '13 at 9:31
  • 1
    $\begingroup$ I know what happened here looking at the data...once I'm at a computer I'll give a full write up. The basics a are it's a delayed recalc to ensure rep is correct when a rare race occurs on real time updates...will give a full explanation in a bit. I can't give specific examples without saying specifically which post you downvoted (I think, need to see) would you want me to do this, and give the concrete example of what happened in this exact case? $\endgroup$ – Nick Craver Jun 26 '13 at 10:16
  • $\begingroup$ @Nick: I tried to look at recently deleted posts and could not find it. But if you have time and can find the post, it would be nice. $\endgroup$ – Mark Sapir Jun 26 '13 at 10:18

Undownvoting or the deletion of a downvoted post. There ought to be a "show removed posts" checkbox at the bottom of your reputation history that will display this.

You can also audit your reputation from here (though this is considerably more confusing)

  • $\begingroup$ Thank you, but I could not find the deleted post. Perhaps a better way is to use the "review" and see posts that are recently deleted. $\endgroup$ – Mark Sapir Jun 26 '13 at 9:42
  • $\begingroup$ It is strange but among recently deleted posts there are none which I downvoted. $\endgroup$ – Mark Sapir Jun 26 '13 at 10:01

This is an artifact of the recalc process that runs every night. To see what happens, let's take the simple 2 request case. These are happening in Parallel:

|(Start)----(Get your Rep: 10)------(Add 10 rep from upvote)-----(Save Rep=20 to DB)|
|(Start)-------(Get your Rep: 10)------(Add 15 rep from accept)------(Save Rep=25 to DB)|

This race happens in several cases, including when reversing a downvote (or even a deletion refunding that downvote, possibly unrelated to your browsing).

The key here is that when the save happens, the database update is = in Linq2SQL (one reason we're slowly removing it and not using it for new things), it's not += or -= which would solve the problem. To be technically accurate, it would greatly narrow the scope of it by narrowing the race window due to our READ UNCOMMITTED transaction isolation level, not 100% solve it.

Anyway, it happens. It will continue to happen as long as we have many, many things happening at once. However, a nice side-effect of us implementing a RepHistory table that records everything is that new rows don't conflict in a race, they just work. Given that, we can simply total up your history and check it against your current rep...if it doesn't match then we perform a recalc - that's what happened here.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .