After examining the ajax that submits the code, and my knowledge of databases and web applications in general, most of these reports are probably due to lag or connection problems -- though rarely your vote might not get counted.
In the javascript, the votes are sent with a 1 value representing helpful or a 0 value representing not helpful. The server responds with a Thank you and relevant message, which is displayed in replacement of the buttons.
Here are some common problems that can occur:- You fail to send the vote. It is common to fail to reach a server momentarily for whatever reason (usually local connection problems but could be any issue between you and the servers in LA). If that happens the review counter will just spin for a very long time. You then browse away without noticing and come back later wondering why it didn't go through.
- You're not even logged in! It may sound silly, but make sure you are logged in. If you somehow logged out or accessed mal from a different computer without logging in, you cannot submit reviews. Not only can you not submit them, but there is no output to warn you that the vote didn't go through -- you click the buttons and they just disappear without any kind of feedback. Perhaps this is misleading, but that's how it works currently when you are logged out. No update to the vote count is made in your browser or on the server, and no message at all appears after you click -- but the buttons disappear.
- MySQL error. You may be connected perfectly but the vote fails for some reason, perhaps a mysql error writing to disk or timing out from slowness. In this case you should have a mysql error text appear in place of the buttons after clicking, and your vote will not have gone through. The numbers will update to reflect a negative vote on your end because 0 is the default value and the javascript is stupid. No changes will be made on the server side so you should hopefully be able to vote again. The very very unlikely bad case here is that mysql fails to update the vote, but still manages to update your review info saying you've voted. Then essentially you lost your right to vote, however tragic that may be. Then you could end up like kajia where no vote was made but it thinks you made one. You may even get a Thank You message but there should be some other mysql-related message.
If after any of these cases somebody else happens to vote, you may think their vote was your own even though your request had nothing to do with it. Compound that with database cache and replication and you may actually be looking at votes from hours before. It's just not easy to gauge, especially for popular anime and manga where several votes might be bouncing around on the same review.
It's difficult for me to imagine anything that could cause an error to actually swap votes. Every single report here can be explained by either lag, or a failed send, or both. There may in fact be some issue that only affects the servers during lag (and weird things do happen), but these reports can be explained even without that. Even if some obscure database issue exists, there is nothing that can be done to completely eradicate it anyway since it would be at a very low level.
In short... 99% of the time your votes will go through fine even if they do not appear immediately. If you got a "Thank you" followed by bold text representing your vote, then it went through and will eventually be accurate. If you are very unlucky a vote might not get counted, but your vote won't magically change to something else.
If you want to be even safer, try to avoid using MAL on the weekends and evenings, since this is when the most users are online, and consequently the time when lag is worst. MAL is much more responsive on weekdays, especially before 5pm PST (GMT-8). |