Production Errors Best Practices
I have been practicing deployment lately, and today we have gotten everything squared away very nicely, only to be confronted with a failure when we actually run the app.
The error was: KeyNotFoundException, because we forgot to move some data to the QA database. We fixed the error, but I also change the error message that we were getting.
Now, we get the following error for this scenario:
Rhino.ServiceBus.Exceptins.InvalidDeploymentException: ERROR_ORDER_ATTRIB_NOT_FOUND: Could not find order attribute with the name: CorrelationId
This is usually an indication that the database has not been properly prepared for the deployment.
You need to add the order attribute to the appropriate table.
Important! If the order attribute 'CorrelationId' is missing, it is likely that other required order attributes are also missing.
Please refer to the deployment guide about the required attributes. If you don't find the required attributes in the deployment guide, please shout at the developer, preferably at 2 AM.
There are a couple of important things that I want to discuss about this error:
- It is very explicit about what is going on.
- It contains the information about how to fix the error.
- It warns about additional problems that this may relate to.
- It contains a uniquely identifying string that can be used to clearly communicate the error, placed in Google or put in a knowledge base.