diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-09-24 16:59:15 +0000 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-09-24 17:45:37 +0000 |
| commit | d67b2483e5bfa5d8c1e6ef1a64fb933f5e080ad5 (patch) | |
| tree | 25a7fd39ac993f3c04c5d8408beb628b3c9948ce /odoo/tools/misc.py | |
| parent | 38d8b0526f0fccc32df5a11f5d086a3522ed5fcf (diff) | |
| parent | 9ed4872ea03f28012118ed48a43d0800617a84f3 (diff) | |
[MERGE] forward port branch saas-12.4 up to 9ed4872ea03
closes odoo/odoo#37372
Signed-off-by: Christophe Simonis <chs@odoo.com>
Diffstat (limited to 'odoo/tools/misc.py')
| -rw-r--r-- | odoo/tools/misc.py | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/odoo/tools/misc.py b/odoo/tools/misc.py index 5715c9b83c6..79f1d386949 100644 --- a/odoo/tools/misc.py +++ b/odoo/tools/misc.py @@ -926,8 +926,10 @@ class ConstantMapping(Mapping): return self._value -def dumpstacks(sig=None, frame=None): - """ Signal handler: dump a stack trace for each existing thread.""" +def dumpstacks(sig=None, frame=None, thread_idents=None): + """ Signal handler: dump a stack trace for each existing thread or given + thread(s) specified through the ``thread_idents`` sequence. + """ code = [] def extract_stack(stack): @@ -944,14 +946,15 @@ def dumpstacks(sig=None, frame=None): 'url': getattr(th, 'url', 'n/a')} for th in threading.enumerate()} for threadId, stack in sys._current_frames().items(): - thread_info = threads_info.get(threadId, {}) - code.append("\n# Thread: %s (db:%s) (uid:%s) (url:%s)" % - (thread_info.get('repr', threadId), - thread_info.get('dbname', 'n/a'), - thread_info.get('uid', 'n/a'), - thread_info.get('url', 'n/a'))) - for line in extract_stack(stack): - code.append(line) + if not thread_idents or threadId in thread_idents: + thread_info = threads_info.get(threadId, {}) + code.append("\n# Thread: %s (db:%s) (uid:%s) (url:%s)" % + (thread_info.get('repr', threadId), + thread_info.get('dbname', 'n/a'), + thread_info.get('uid', 'n/a'), + thread_info.get('url', 'n/a'))) + for line in extract_stack(stack): + code.append(line) if odoo.evented: # code from http://stackoverflow.com/questions/12510648/in-gevent-how-can-i-dump-stack-traces-of-all-running-greenlets |
