-
-
Notifications
You must be signed in to change notification settings - Fork 728
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
Ensure large payload can be serialized and sent over comms #8507
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, @fjetter! LGTM, assuming there are no surprises on CI.
Unit Test ResultsSee test report for an extended history of previous test failures. This is useful for diagnosing flaky tests. 27 files ± 0 27 suites ±0 10h 11m 0s ⏱️ +58s For more details on these failures, see this check. Results for commit a7b43d9. ± Comparison against base commit 72f297a. ♻️ This comment has been updated with latest results. |
The new test |
|
I can see in my pytest log:
(continues for several pages) |
@crusaderky: There's already an issue for those long debug logs: #8465 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, @fjetter and @crusaderky! CI looks good now.
FYI the previous test await comm.write({"op": "echo", "x": to_serialize(data)}) was not reproducing the issue, because it was sending a tiny msgpack blob + a 2 GiB buffer. await comm.write({"op": "echo", "x": data})) which mocks the current behaviour of Regardless of the "proper" fix suggested above, this PR is useful nonetheless (besides for timing) when you have 2 GiB of bufferless data, e.g. caused by an object-string dataframe. |
It is certainly possible. This Python issue fixed in 3.11.0 sticks out to me: https://bugs.python.org/issue42854 To unpack that, Python 3.10 requires OpenSSL 1.1.1 with PEP 644 and makes use of the newer OpenSSL APIs allowing more throughput: python/cpython#25468 However they had a bug (same one mentioned above) where they weren't consistently using It looks like GH issue ( python/cpython#87020 ) covers the full history of these changes. Note one use made the same observation about Python 3.10 Florian: python/cpython#87020 (comment) So maybe we can just bump the minimum Python version to 3.11 Edit: Interesting, that fix was backported to Python 3.10 ( python/cpython#27308 ). Can see it in the Python 3.10rc1 changelog. So would have been in the Python 3.10.0 final release. Maybe it is worth asking what Python version exactly (with patch version, which OS and from where) is being used? Also does it build with OpenSSL or a different SSL library? Also which SSL library version? |
Thank you @jakirkham for your detailed response.
I think I'm having a hard time answering all of those questions. On my machine, I'm using conda and these are the relevant packages installed
|
This includes two changes that aim to support the submission of very large graphs
Closes #8257
max_*_len
. According to https://msgpack-python.readthedocs.io/en/latest/api.html#msgpack.unpackb they are now automatically set to the payload size and are there to protect from malicious behavior. Not setting it ourselves effectively removes any artificial limits from what I understand.