GitHub user StephanEwen opened a pull request:
https://github.com/apache/flink/pull/5348
[FLINK-8466] [runtime] Make sure ErrorInfo references no user-defined
classes
## What is the purpose of the change
Making sure that ErrorInfo references no user-defined classes and thus does
not prevent class unloading.
## Brief change log
- `ErrorInfo` holds its exceptions as `SerializedThrowable`.
- Pull the "ground truth" exception into a separate fields, so that the
ExecutionGraph logic itself can always assume to have the proper ground-truth
exception. That is important, because the ExecutionGraph may react differently
to different exception types, and it is critical that the exception does not
get lost on occasion (as possible in case of a weak reference).
## Verifying this change
Self contained, adds a unit test.
## Does this pull request potentially affect one of the following parts:
- Dependencies (does it add or upgrade a dependency): (yes / **no)**
- The public API, i.e., is any changed class annotated with
`@Public(Evolving)`: (yes / **no)**
- The serializers: (yes / **no** / don't know)
- The runtime per-record code paths (performance sensitive): (yes /
**no** / don't know)
- Anything that affects deployment or recovery: JobManager (and its
components), Checkpointing, Yarn/Mesos, ZooKeeper: **(yes** / no / don't know)
- The S3 file system connector: (yes / **no** / don't know)
## Documentation
- Does this pull request introduce a new feature? (yes / **no)**
- If yes, how is the feature documented? (**not applicable** / docs /
JavaDocs / not documented)
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/StephanEwen/incubator-flink error_info
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/flink/pull/5348.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #5348
----
commit 9a95c377a8ce713791a8697ca8fa2a5f24dacc4f
Author: Stephan Ewen <sewen@...>
Date: 2018-01-23T21:00:06Z
[FLINK-8466] [runtime] Make sure ErrorInfo references no user-defined
classes.
That way, holding on to the ErrorInfo does not prevent class unloading.
However, this implies that the ErrorInfo must not hold strong references to
any Exception classes.
For that reason, the commit pull the "ground truth" exception into a
separate fields, so that the
ExecutionGraph logic itself can always assume to have the proper
ground-truth exception.
----
---