[ZEPPELIN-6543] Handle invokeMethod serialization failure as InterpreterRPCException - #5349
Open
gyowoo1113 wants to merge 2 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is this PR for?
This PR follows up on ZEPPELIN-6467 / PR #5312.
Following PR #5312,
Resource.serializeObject()propagates serialization failures asIOException. As a result,RemoteInterpreterEventServer.invokeMethod()can receive an exception while re-serializing a remote resource invocation result. The existing handler logged the exception and returned a nullByteBuffer, causing the generated Thrift client to report a missing result instead of preserving the original serialization failure.The Jira issue identified this behavior through code analysis, but the server-side deserialize-and-re-serialize failure path had not yet been reproduced.
This PR adds a regression test using a serializable object that succeeds during the initial serialization and fails during the server-side second serialization. It then changes
invokeMethod()to propagate the failure asInterpreterRPCException, allowing the original error message to reach the caller instead of being converted into an unrelated Thrift missing-result error.The behavior for successfully serialized results is unchanged.
What type of PR is it?
Bug Fix
Todos
InterpreterRPCExceptionWhat is the Jira issue?
[ZEPPELIN-6543]
How should this be tested?
./mvnw test -pl zeppelin-server -Dtest=RemoteInterpreterEventServerTestpasses successfully.Screenshots (if appropriate)
N/A
Questions:
Resource.serializeObject()may returnnullwhen the result is not serializable, but this path is not covered by the regression test in this PR. Should this case also be handled in this PR, or should it be addressed separately?