MailGun Outage Postmortem
blog.mailgun.com
blog.mailgun.com
If you have a software stack and it is going to do something that is not idempotent (like billing customers or sending emails), you need a state machine more complex than "not done" and "done". You need a "doing" state. After service is restored and everything is running smoothly, you go through all the tasks stuck in "doing" and decide whether to retry or abort, based on other logs or an evaluation of the consequences of not acting vs double acting. What you do not do is have your software just keep hammering away until everything magically turns "done".
That's not the sort of thing I'd expect from a company whose entire business is email...
We're still huge Mailgun fans though, and have been since they were just starting out. We've certainly had worse crashes of ineptitude than this ourselves.
Kudos for the thorough post-mortem!
Again, we are sorry this happened. Per our analysis duplicates occurred because monits were killing delivery processes in emergency, so only small part of the overall traffic was affected.
That does not make it any better for customers that were receiving duplicates/quadruplicates though.