Here's what we do know:
1. We know having LiveAgent javascript chat in any section of the 4 checkout pages causes problems. We have removed it and have seen some improvement but the problem has not gone away. So we're not fully convinced this was an issue but have eliminated it as a possibility nonetheless.
2. We have not been able to determine a time of day or specific admin action that results in the behavior. It can happen in the morning, afternoon or evening.
3. User maintenance is not running at the time checkouts start failing.
4. Once the problem starts, it does not resolve itself. Only a restart of the app pool, restart of IIS or a reboot of the entire server resolves the issue.
5. The problem affects both admin-side and shopper-side ability to checkout. This is a key clue to the problem in my opinion.
Errors in the app.log seem to be the majority of these two examples. This one is from an admin trying to create order:
And this one is from the shopper side during the same outage:2013-07-26 08:30:53,003 ERROR AbleCommerce An error has occured at https://www.firefold.com/Admin/Orders/C ... ?UID=11977
System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: key
at CommerceBuilder.DomainModel.EntityWithTypedId`1.Save()
at CommerceBuilder.Stores.StoreRepository.GetNextOrderNumber(Boolean increment)
at CommerceBuilder.Stores.StoreDataSource.GetNextOrderNumber(Boolean increment)
at CommerceBuilder.Services.Checkout.CheckoutService.ExecuteCheckout(CheckoutRequest checkoutRequest, Boolean validateBasket)
at AbleCommerce.Admin.Orders.Create.DeferPaymentForm.SubmitButton_Click(Object sender, EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
2013-07-26 08:36:23,817 ERROR AbleCommerce An error has occured at https://www.firefold.com/Checkout/Payment.aspx
System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: key
at CommerceBuilder.DomainModel.EntityWithTypedId`1.Save()
at CommerceBuilder.Stores.StoreRepository.GetNextOrderNumber(Boolean increment)
at CommerceBuilder.Stores.StoreDataSource.GetNextOrderNumber(Boolean increment)
at CommerceBuilder.Services.Checkout.CheckoutService.ExecuteCheckout(CheckoutRequest checkoutRequest, Boolean validateBasket)
at AbleCommerce.ConLib.Checkout.PaymentForms.MailPaymentForm.MailButton_Click(Object sender, EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)