Possible Duplicates:
Undoing an old vote cannot be recast because vote is too old
Why would I be told it’s too late to change my vote when I have yet to cast a vote?

Ok, so I recently voted down a question. Then, I rephrased it and I undid my downvote. Now, when I try to upvote it says my vote is locked even though there is no actual vote now.

This seems like buggy behavior. So which one should it be?

  1. When you edit a question it doesn't affect your own vote locks(can't undo downvote)
  2. When you edit a question, it does affect vote locks completely and you can both undo your downvote and later upvote the post.
  • 2
    Why downvote with the intention to upvote after editing?
    – Jon Seigel
    Commented May 2, 2010 at 19:41
  • @Jon I didn't intend to edit it, but ended up doing it anyway. Then I was happy with my edit and the question yet it still had a -3 vote score, so I undid my downvote and then later it started getting close votes so I tried upvoting as a way of saying this should be kept open..
    – Earlz
    Commented May 2, 2010 at 20:42
  • 1

2 Answers 2


This is a very unintuitive feature of the voting system that Jeff assumes makes complete sense.
(Yeah, I don't get it either....)

Basically, after you have voted up or down, even if you remove the vote, you still have technically voted.

I'm guessing this is because a vote might look like this in the Database:

ID | User_ID | Post_ID | Action | Timestamp
2  | 0000000 | 1000000 |   1    | 8/8/93
3  | 0000000 | 1000000 |  -1    | 8/8/93
4  | 0000000 | 1000000 |   0    | 8/8/93

Where the first is an upvote, the second is a downvote, and the third is neither a downvote or upvote.

Because when you vote (up or down) you create an entry, it probably doesn't delete that entry when you try to undo it/change it, instead it just sets it to the value you really want.

By not deleting it, you can cut down on the number of queries by doing something akin to:

INSERT INTO database (`User_ID`, `Post_ID`, `Action`, `Timestamp`)
    VALUES("$user_id", "$post_id", "$action", "$time") 
    ON DUPLICATE KEY UPDATE `Action`="$action"

instead of having to try to find if an entry already exists.


After an "unlock", by yourself or by somebody else, you always only have one chance to change your vote. Once you clicked on any of the vote arrows that new vote is immediately locked in again.

So to actually upvote the post you would have needed to directly click the upvote button, which would have changed your vote from a downvote to an upvote.

(I still really think that after an edit a new vote should not immediately lock in. It should behave the same as a new vote, with the same grace time in which it still can be changed, but currently it doesn't.)


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