I've fixed a section editing bug that was corrupting the saving of the previous revision to the old table when used by an anonymous user.
The code in updateArticle() called getContent() to get the page text to do its section munging on. But, that function grabs the data through loadContent(), which doesn't load the fields for cur_user_text, cur_is_minor, or cur_comment (as these are not used when displaying a rendered article); the later call to loadLastEdit() sees that data has been loaded (as the data for cur_user _was_ loaded... but that isn't used for page display either, is it?) and doesn't fill out the rest of the data.
Thus when we save the last edit's data back to old, it's missing those fields. (If still in recentchanges, the comment and minor status can be recovered; user name can be recovered from user id for logged-in users, but if any anon edits were corrupted that fell off the recentchanges table, they may not be recoverable unless they happen to have been caught in a backup.)
Now, this bug is kinda hidden because a logged-in user causes an earlier call to loadLastEdit() to allow for overriding the edit conflict check if the last edit was by the present user, and the only section editing allowed to anons is 'post comment', which is used fairly rarely so far.
Argggh... I moved the call up earlier so all data is loaded, but the functions should probably be changed to not stomp on each other badly.
The emergency fix is applied to dev and stable branches and installed on the servers.
-- brion vibber (brion @ pobox.com)
wikitech-l@lists.wikimedia.org