From 737a8dd5cb1969647872bc060797a8e12cbd8e20 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Tue, 12 Aug 2014 19:48:44 +0530 Subject: [PATCH] [fix] Get Notification Deadlock --- frappe/__init__.py | 14 +++++++-- frappe/app.py | 4 +-- .../notification_count/notification_count.py | 29 +++++++++++++++--- frappe/public/css/font/noto-sans.woff | Bin 12632 -> 0 bytes frappe/setup_logging.py | 2 +- frappe/utils/email_lib/email_body.py | 2 +- 6 files changed, 39 insertions(+), 12 deletions(-) delete mode 100644 frappe/public/css/font/noto-sans.woff diff --git a/frappe/__init__.py b/frappe/__init__.py index 497e47d890..f055f4d940 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -7,8 +7,7 @@ globals attached to frappe module from __future__ import unicode_literals from werkzeug.local import Local, release_local -import os, importlib, inspect -import json +import os, importlib, inspect, logging, json # public from frappe.__version__ import __version__ @@ -639,3 +638,14 @@ def get_print_format(doctype, name, print_format=None, style=None, as_pdf=False) return html else: return html + +logging_setup_complete = False +def get_logger(module=None): + from frappe.setup_logging import setup_logging + global logging_setup_complete + + if not logging_setup_complete: + setup_logging() + logging_setup_complete = True + + return logging.getLogger(module or "frappe") diff --git a/frappe/app.py b/frappe/app.py index c06cd44df7..338f9d3805 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -20,15 +20,13 @@ import frappe.utils.response import frappe.website.render from frappe.utils import get_site_name from frappe.middlewares import StaticDataMiddleware -from frappe.setup_logging import setup_logging local_manager = LocalManager([frappe.local]) _site = None _sites_path = os.environ.get("SITES_PATH", ".") -setup_logging() -logger = logging.getLogger(__name__) +logger = frappe.get_logger() @Request.application def application(request): diff --git a/frappe/core/doctype/notification_count/notification_count.py b/frappe/core/doctype/notification_count/notification_count.py index d58beb5029..1cb7253d3e 100644 --- a/frappe/core/doctype/notification_count/notification_count.py +++ b/frappe/core/doctype/notification_count/notification_count.py @@ -5,8 +5,11 @@ from __future__ import unicode_literals import frappe +import MySQLdb from frappe.model.document import Document +logger = frappe.get_logger() + class NotificationCount(Document): pass @@ -34,18 +37,34 @@ def get_notifications(): result = frappe.get_list(d, fields=["count(*)"], filters=[[d, key, "=", condition[key]]], as_list=True)[0][0] - frappe.get_doc({"doctype":"Notification Count", "for_doctype":d, - "open_count":result}).insert(ignore_permissions=True) - open_count_doctype[d] = result + try: + frappe.get_doc({"doctype":"Notification Count", "for_doctype":d, + "open_count":result}).insert(ignore_permissions=True) + + except MySQLdb.OperationalError, e: + if e.args[0] != 1213: + raise + + logger.error("Deadlock") + for m in config.for_module: if m in notification_count: open_count_module[m] = notification_count[m] else: open_count_module[m] = frappe.get_attr(config.for_module[m])() - frappe.get_doc({"doctype":"Notification Count", "for_doctype":m, - "open_count":open_count_module[m]}).insert(ignore_permissions=True) + + try: + frappe.get_doc({"doctype":"Notification Count", "for_doctype":m, + "open_count":open_count_module[m]}).insert(ignore_permissions=True) + + except MySQLdb.OperationalError, e: + if e.args[0] != 1213: + raise + + logger.error("Deadlock") + return { "open_count_doctype": open_count_doctype, diff --git a/frappe/public/css/font/noto-sans.woff b/frappe/public/css/font/noto-sans.woff deleted file mode 100644 index ff45f4325871f9a9fcaff04c921a0cf44f824874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12632 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 diff --git a/frappe/setup_logging.py b/frappe/setup_logging.py index 894f7186c9..f7fbc09d21 100644 --- a/frappe/setup_logging.py +++ b/frappe/setup_logging.py @@ -35,7 +35,7 @@ def setup_logging(): } }, "loggers": { - "frappe.app": { + "frappe": { "level": "INFO", "propagate": False, "filters": ["context_filter"], diff --git a/frappe/utils/email_lib/email_body.py b/frappe/utils/email_lib/email_body.py index d27c5db990..1073283411 100644 --- a/frappe/utils/email_lib/email_body.py +++ b/frappe/utils/email_lib/email_body.py @@ -31,7 +31,7 @@ class EMail: Also provides a clean way to add binary `FileData` attachments Also sets all messages as multipart/alternative for cleaner reading in text-only clients """ - def __init__(self, sender='', recipients=[], subject='', alternative=0, reply_to=None): + def __init__(self, sender='', recipients=(), subject='', alternative=0, reply_to=None): from email.mime.multipart import MIMEMultipart from email import Charset Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8')