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 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:


+ 3
- 0
frappe/public/js/frappe/request.js 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);


Loading…
Cancel
Save