Browse Source

Better message for lock wait timeout and deadlock

version-14
Anand Doshi 10 years ago
parent
commit
74c21db40f
2 changed files with 12 additions and 0 deletions
  1. +9
    -0
      frappe/app.py
  2. +3
    -0
      frappe/public/js/frappe/request.js

+ 9
- 0
frappe/app.py View File

@@ -5,6 +5,7 @@ from __future__ import unicode_literals
import sys, os import sys, os
import json import json
import logging import logging
import MySQLdb


from werkzeug.wrappers import Request, Response from werkzeug.wrappers import Request, Response
from werkzeug.local import LocalManager from werkzeug.local import LocalManager
@@ -70,6 +71,14 @@ def application(request):
except Exception, e: except Exception, e:
http_status_code = getattr(e, "http_status_code", 500) 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: if frappe.local.is_ajax:
response = frappe.utils.response.report_error(http_status_code) response = frappe.utils.response.report_error(http_status_code)
else: else:


+ 3
- 0
frappe/public/js/frappe/request.js View File

@@ -66,6 +66,9 @@ frappe.request.call = function(opts) {


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


Loading…
Cancel
Save