-
Notifications
You must be signed in to change notification settings - Fork 29.3k
[SPARK-21045][PYTHON] Allow non-ascii string as an exception message from python execution in Python 2 #25847
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
90559c0
fb72447
ff7f248
42a9eb0
0652966
ffb4d29
d6ec7ae
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -46,6 +46,7 @@ | |
|
|
||
| if sys.version >= '3': | ||
| basestring = str | ||
| unicode = str | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is necessary, see #25814 (comment)
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Then I think we don't need the comditionat 603 line |
||
| else: | ||
| from itertools import imap as map # use iterator map by default | ||
|
|
||
|
|
@@ -598,8 +599,18 @@ def process(): | |
| process() | ||
| except Exception: | ||
| try: | ||
| exc_info = traceback.format_exc() | ||
| if sys.version_info.major < 3: | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Likewise, let's drop this right after we drop Python 2, which I will do right after Spark 3. |
||
| if isinstance(exc_info, unicode): | ||
| exc_info = exc_info.encode("utf-8") | ||
| else: | ||
|
advancedxy marked this conversation as resolved.
Outdated
|
||
| # exc_info may contains other encoding bytes, replace the invalid byte and | ||
| # convert it back to utf-8 again | ||
| exc_info = exc_info.decode("utf-8", "replace").encode("utf-8") | ||
| else: | ||
| exc_info = exc_info.encode("utf-8") | ||
| write_int(SpecialLengths.PYTHON_EXCEPTION_THROWN, outfile) | ||
| write_with_length(traceback.format_exc().encode("utf-8"), outfile) | ||
| write_with_length(exc_info, outfile) | ||
| except IOError: | ||
| # JVM close the socket | ||
| pass | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.