25

At exactly the same timestamp, three identical edits were suggested to a post by a user.

User profile with three suggested edits each submitted 8 hours ago

Facts about those edits:

  1. The first suggested-edit (from the bottom) doesn't show who approved or rejected it, but only "this item is no longer reviewable" and error 404 for others.
  2. The second suggested edit is shown to be approved by a non-moderator and is marked Approved.
  3. The third suggested edit (first in the image) is marked Approved despite my rejection of it. Only one user before me had approved it.

If the IDs of the edits (in the URL) are to be considered, the one I rejected (first in the image) came first, then the one which cannot be reviewed, and finally, the one marked approved by a non-moderator.

Furthermore, the user before me approved the edit 3 hours before me. Another user who approved the edit did so almost 2 hours after me.

Now, I simply don't understand what is going on here. The only related question I came across is Suggested edit approved despite being rejected five times which doesn't get me anywhere.

So the things I want to know are:

  • Why are the approve/reject votes on identical suggested-edits not isolated? How come a non-moderator (barring OP), later on, was able to approve an edit despite a mod's rejection? I thought mods' actions were binding and immediate, and required a process to be revisited to overturn their actions (in certain matters).
  • What caused or could have caused those three edits to be registered at the same timestamp?
  • Furthermore, what led to only one of them invalidated automatically per the timeline here while two edits remained valid?
  • Finally, is this intentional or a bug? If intentional, what good is it doing?
  • Maybe they edited their suggested edit? So maybe it is one revision with 2 reviews connected to it, but the revision gets approved if when it receives the two needed approve votes. It is probably an interesting race-condition. – rene Jan 3 at 20:17
  • @rene but that still doesn't explain the exact timestamp to me. Prima facie, the edits appear exactly the same, including the two which were approved. – Firelord Jan 3 at 20:39
  • Yeah, this needs a dev with access to the logs to piece together what exactly came in when and what got created due to that. – rene Jan 3 at 20:55
  • One more thing from the timeline: there's also a newer suggestion edit 8 hours later that has a simultaneous date to the 3rd review and redirects to the 1st review. Yeah, bizarre... – Meta Andrew T. Jan 4 at 1:59
  • Do any of these suggestions show in the review history tab? Trying to see how related this is to another bug... – Awesome Poodles Jan 4 at 20:22
  • 1
    @AwesomePoodles it shows three reviews for two edits with IDs 209574 and 209584 (per URL). – Firelord Jan 4 at 20:46
  • Thank you, @Firelord. – Awesome Poodles Jan 4 at 20:54
23

First off, I gotta note: the core suggested edit logic is really old - it dates back to early 2011. It was updated a bit back in '12 to allow integration with the then-new review system, but it's still kinda separate and... Well, it does things a bit differently.

So with that in mind, here's what happened...

  1. The editor submitted two edits simultaneously. Well, probably not exactly at the same time, but close enough; who knows how that happened, maybe they double-clicked, maybe their network hiccuped... Anyway, two in-flight requests for the same exact edit.
  2. This ended up creating two suggested edits on the same post, for the same revision, at the same time (07:48:00). For the sake of discussion, let's call those edits 21773 and 21774. What, they're nice names. I have a niece named 21774, named after my uncle, ol' 21 "Bob" 773. Also those were the actual database IDs.
  3. Along with the suggested edits, those simultaneous requests created two review tasks, one associated with each edit. Now things start to get weird...
  4. At 12:55:14, you opened this review task which was associated with edit 21774; at 12:55:55, you submitted a rejection. Because you're a moderator, that immediately rejected the associated suggested edit. End of the line for poor 21774.
  5. The suggested edit logic assumes there'll only ever be one pending suggested edit on a given post at a time, and only one active review task - so it doesn't bother keeping track of which task you were actually reviewing; it grabs the first pending review task it can find for the post, and attaches your review to it. It grabbed this task, associated with edit 21773 which had already been reviewed by wbogacz, and attached your rejection to it. This also marked the review task completed.
  6. Now there's only one suggested edit left pending (21773) and only one pending review task (this one), and they don't match.
  7. At 13:14:42, a scheduled task runs, notices that the suggested edit associated with the outstanding review task has been rejected, and invalidates the task. All that remains is one outstanding suggested edit, with no associated review tasks.
  8. Ah! But there's another scheduled task that exists for the sole purpose of finding orphaned suggested edits and adding review tasks for 'em! It runs at 14:00:00, finds 21773 hanging around, and creates this task for it. It helpfully backdates the new task to the creation time of the edit, thus ensuring I spend a good 20 minutes tearing out what little hair remained on my head before finding it.
  9. At 15:40:34, mattm submits an approval for this new task. Suggested edit logic still doesn't think there'll ever be multiple pending edits for a post, much less multiple tasks for a single edit... So it counts all of the reviews associated with all of the tasks associated with this edit. Since wbogacz had already approved it previously, mattm's approval brought this total up to 2, enough to finalize approval for the edit and complete the task.
  10. Our long strange trip is done.

Suggested fix

Wow. Uh... This is pretty rare; it might not be worth fixing at all. But if we were gonna fix it, I'd probably lean toward the advice given in this comment above the scheduled task noted in step #8 above:

    // TODO: When SuggestedEdits are no longer L2S, we can remove the need for this
    //       by making the insert of the reviewtask and the insert of the suggested
    //       edit part of same statement/transcation.

That and... Maybe pass the review task ID into the suggested edit logic somehow so they don't get separated.

  • 4
    The more they overthink the plumbing, the easier it is to stop up the drain. - Scotty – Gypsy Spellweaver Jan 4 at 4:02
  • 3
    Plot twist: it's all your nephew 21775's fault; he was trying to make trouble for your niece after they had an argument about pineapple on pizza. – Monica Cellio Jan 4 at 4:47
  • 1
    The more complex the system, the more complex the failure modes…. – Nathan Tuggy Jan 4 at 7:26
  • If only we had an spec that code should follow... – Braiam Jan 8 at 18:18
  • it was updated a bit back in '12 to allow integration with the then-new review system...is this why the URL scheme used to be at /suggested-edits but was later changed to /review/suggested-edits? – Sonic the Anonymous WizHog Apr 21 at 20:31
  • Yes. Note that /suggested-edits/<Id> should still work, if you happen to have the id of a suggested edit (not the id of the associated review task). – Shog9 Apr 21 at 23:11

You must log in to answer this question.

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