-
Notifications
You must be signed in to change notification settings - Fork 16.4k
Fix reading huge (XCom) resposne in TaskSDK task process #53186
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
Fix reading huge (XCom) resposne in TaskSDK task process #53186
Conversation
If you tried to send a large XCom value, it would fail in the task/child process side with this error: > RuntimeError: unable to read full response in child. (We read 36476, but expected 1310046) (The exact number that was able to read dependent on any different factors, like the OS, the current state of the socket and other things. Sometimes it would read up to 256kb fine, othertimes only 35kb as here) This is because the kernel level read-side socket buffer is full, so that was as much as the Supervisor could send. The fix is to read in a loop until we get it all.
Co-authored-by: Kaxil Naik <kaxilnaik@gmail.com>
amoghrajesh
left a comment
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.
Fine with @kaxil's optimisation to simplicity too, or even otherwise. LGTM +1
Backport failed to create: v3-0-test. View the failure log Run details
You can attempt to backport this manually by running: cherry_picker b9620bf v3-0-testThis should apply the commit to the v3-0-test branch and leave the commit in conflict state marking After you have resolved the conflicts, you can continue the backport process by running: cherry_picker --continue |
…53186) If you tried to send a large XCom value, it would fail in the task/child process side with this error: > RuntimeError: unable to read full response in child. (We read 36476, but expected 1310046) (The exact number that was able to read dependent on any different factors, like the OS, the current state of the socket and other things. Sometimes it would read up to 256kb fine, othertimes only 35kb as here) This is because the kernel level read-side socket buffer is full, so that was as much as the Supervisor could send. The fix is to read in a loop until we get it all. (cherry picked from commit b9620bf) Co-authored-by: Ash Berlin-Taylor <ash@apache.org>
…53186) (#53194) If you tried to send a large XCom value, it would fail in the task/child process side with this error: > RuntimeError: unable to read full response in child. (We read 36476, but expected 1310046) (The exact number that was able to read dependent on any different factors, like the OS, the current state of the socket and other things. Sometimes it would read up to 256kb fine, othertimes only 35kb as here) This is because the kernel level read-side socket buffer is full, so that was as much as the Supervisor could send. The fix is to read in a loop until we get it all. (cherry picked from commit b9620bf) Co-authored-by: Ash Berlin-Taylor <ash@apache.org>
…53186) (#53194) If you tried to send a large XCom value, it would fail in the task/child process side with this error: > RuntimeError: unable to read full response in child. (We read 36476, but expected 1310046) (The exact number that was able to read dependent on any different factors, like the OS, the current state of the socket and other things. Sometimes it would read up to 256kb fine, othertimes only 35kb as here) This is because the kernel level read-side socket buffer is full, so that was as much as the Supervisor could send. The fix is to read in a loop until we get it all. (cherry picked from commit b9620bf) Co-authored-by: Ash Berlin-Taylor <ash@apache.org>
If you tried to send a large XCom value, it would fail in the task/child process side with this error: > RuntimeError: unable to read full response in child. (We read 36476, but expected 1310046) (The exact number that was able to read dependent on any different factors, like the OS, the current state of the socket and other things. Sometimes it would read up to 256kb fine, othertimes only 35kb as here) This is because the kernel level read-side socket buffer is full, so that was as much as the Supervisor could send. The fix is to read in a loop until we get it all.
If you tried to send a large XCom value, it would fail in the task/child
process side with this error:
(The exact number that was able to read dependent on any different factors,
like the OS, the current state of the socket and other things. Sometimes it
would read up to 256kb fine, othertimes only 35kb as here)
This is because the kernel level read-side socket buffer is full, so that was
as much as the Supervisor could send. The fix is to read in a loop until we
get it all.