Better message for lock wait timeout and deadlock

This commit is contained in:
Anand Doshi 2015-02-27 13:38:29 +05:30
parent 161c94067e
commit 74c21db40f
2 changed files with 12 additions and 0 deletions

View file

@ -5,6 +5,7 @@ from __future__ import unicode_literals
import sys, os
import json
import logging
import MySQLdb
from werkzeug.wrappers import Request, Response
from werkzeug.local import LocalManager
@ -70,6 +71,14 @@ def application(request):
except Exception, e:
http_status_code = getattr(e, "http_status_code", 500)
if (http_status_code==500
and isinstance(e, MySQLdb.OperationalError)
and e.args[0] in (1205, 1213)):
# 1205 = lock wait timeout
# 1213 = deadlock
# code 409 represents conflict
http_status_code = 409
if frappe.local.is_ajax:
response = frappe.utils.response.report_error(http_status_code)
else:

View file

@ -66,6 +66,9 @@ frappe.request.call = function(opts) {
msgprint(__("Not permitted"));
},
409: function(xhr) {
msgprint(__("Another transaction is blocking this one. Please try again in a few seconds."));
},
417: function(data, xhr) {
if(typeof data === "string") data = JSON.parse(data);
opts.error_callback && opts.error_callback(data, xhr.responseText);