ponsite.blogg.se

Huntdown after you
Huntdown after you






huntdown after you

Since we don’t have a high volume of emails I was able to check the db by just eyeballing the Django admin page. It’s good to quickly check for stupid obvious things just in case. Is the email in the database?Īfter checking SendGrid (most upstream) I then checked to see if the the database (most downstream) had received the email content.Īs an aside, I also checked if the email was showing up in the web UI, which it wasn’t (maybe my user got confused and looked at the wrong case?). They have good reporting on email sending, but this dashboard was disappointingly vague. Reassuring but not very helpful in this case. This is all I could find - so I’ve learned that we usually get emails. I had a click around and found their reporting on this matter to be.

huntdown after you

In this case it seemed easiest to check SendGrid’s fancy web UI for evidence of an email failing to be received or something.

#Huntdown after you code

“our code is garbage it’s probably our code, let’s check that first”), which is a cool and smart thing to do. Of course you may have a special system-specific knowledge that leads you towards checking one particular component first (eg. So do you start upstream or downstream? I think you do whatever’s most convenient and practical. if we knew that the database contained the email (or it was showing up on the website itself!) then there’d be no point checking upstream services like SendGrid or NGINX (saving time).if we definitely knew that SendGrid did not receive the email, then there’d be no point checking anywhere downstream (saving time).

huntdown after you

In this case, my intuition is to check the “start” and “end” points of this system and work my way inwards. So, the hunt begins for evidence of this missing email, but where to start looking? One needs a search strategy. A database hosting all the Django tables (including email content).Gunicorn app server running the Django web application.NGINX receives all web traffic, sends requests onwards to the app server.Inside the web server there’s a pretty standard “3 tier” setup: My web application ingests the POST request and stores the relevant bits in a database table.SendGrid sends the email content to a webhook URL on my webserver as an HTTP POST request.SendGrid (SaaS product) receives the email via SMTP.The email travels through the mystical email realm.The client sends an email from their email client.There’s one more piece of info you need to have before you start digging into log files and such: what are the components of the email-receiving system? I assembled this one myself, but under other circumstances, in a team setting, I might ask around to build a complete picture of the system. With this info in hand I can focus my search on a particular time range and sender address. when they attempted to send the email (over the weekend apparently).what address was used to send the email (eg.I know the case number but that’s not enough to track any error messages efficiently. So this was the message I got over Slack from a user of my website:Ī user was not receiving an email, despite their client insisting that they had sent the email. So a user has told you about a bug in production, and you’ve gotta fix it - how do you figure out what went wrong? Where do you start? In this post I’ll walk you through an illustrative example of hunting down a bug in our email system. In any case, you’ve got to find and fix these issues promptly or your users will learn to distrust you and your software, kicking off a feedback loop of negative perception. Ideally, with a solid monitoring stack, you will be alerted of bugs and crashes as they happen, but some may still slip through the cracks. I am not getting reply emails for case ABC123 Jane Doe Then people start to actually use it in earnest and you begin to receive messages like this in Slack: A glittering crystal palace of logic and reason. You sit, adoringly refreshing the homepage of to watch it load over and over. Once you’ve deployed your web app to prod there is a moment of satisfaction: a brief respite where you can reflect on your hard work.








Huntdown after you