[
https://issues.apache.org/jira/browse/STORM-3164?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated STORM-3164:
----------------------------------
Labels: exception handling multilang pull-request-available python (was:
exception handling multilang python)
> Multilang storm.py uses traceback.format_exc incorrectly
> --------------------------------------------------------
>
> Key: STORM-3164
> URL: https://issues.apache.org/jira/browse/STORM-3164
> Project: Apache Storm
> Issue Type: Bug
> Components: storm-core, storm-multilang
> Affects Versions: 1.2.2
> Reporter: Mal Graty
> Priority: Minor
> Labels: exception, handling, multilang, pull-request-available,
> python
>
> {code:title=storm.py}
> except Exception as e:
> reportError(traceback.format_exc(e))
> fail(tup)
> except Exception as e:
> reportError(traceback.format_exc(e))
> {code}
> The method signature for traceback.format_exc is (limit=None, chain=True).
> Where limit is an int and chain a bool. See documentation for python2.7 and 3:
> https://docs.python.org/2.7/library/traceback.html
> https://docs.python.org/3/library/traceback.html
> Passing an Exception object results in the exception handling code throwing
> an exception itself and crashing out as a result:
> {code}
> During handling of the above exception, another exception occurred:
>
>
>
>
>
> Traceback (most recent call last):
>
>
> File "word_joiner.py", line 20, in <module>
>
>
> WordJoiner().run()
>
>
> File
> "/tmp/be86d36d-d293-4694-a8f0-0f018e540936/supervisor/stormdist/test-1-1532824220/resources/storm.py",
> line 200, in run
>
> reportError(traceback.format_exc(e))
>
>
> File "/usr/lib/python3.4/traceback.py", line 256, in format_exc
>
>
> return "".join(format_exception(*sys.exc_info(), limit=limit,
> chain=chain))
>
> File "/usr/lib/python3.4/traceback.py", line 181, in format_exception
>
>
> return list(_format_exception_iter(etype, value, tb, limit, chain))
>
>
> File "/usr/lib/python3.4/traceback.py", line 153, in _format_exception_iter
>
>
> yield from _format_list_iter(_extract_tb_iter(tb, limit=limit))
>
>
> File "/usr/lib/python3.4/traceback.py", line 18, in _format_list_iter
>
>
> for filename, lineno, name, line in extracted_list:
>
>
> File "/usr/lib/python3.4/traceback.py", line 58, in
> _extract_tb_or_stack_iter
>
>
> while curr is not None and (limit is None or n < limit):
>
>
> TypeError: unorderable types: int() < TypeError()
> {code}
> The solution in this case is to simply not pass any arguments to
> traceback.format_exc. It will automatically fetch the context of the catch
> block it resides in and gracefully return the traceback as a string, which is
> what storm.py is expecting.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
