Skip to content

Conversation

@rednaxelafx
Copy link
Contributor

@rednaxelafx rednaxelafx commented Sep 25, 2020

What changes were proposed in this pull request?

Use Utils.getSimpleName to avoid hitting Malformed class name error in TreeNode.

Why are the changes needed?

On older JDK versions (e.g. JDK8u), nested Scala classes may trigger java.lang.Class.getSimpleName to throw an java.lang.InternalError: Malformed class name error.

Similar to #29050, we should use Spark's Utils.getSimpleName utility function in place of Class.getSimpleName to avoid hitting the issue.

Does this PR introduce any user-facing change?

Fixes a bug that throws an error when invoking TreeNode.nodeName, otherwise no changes.

How was this patch tested?

Added new unit test case in TreeNodeSuite. Note that the test case assumes the test code can trigger the expected error, otherwise it'll skip the test safely, for compatibility with newer JDKs.

Manually tested on JDK8u and JDK11u and observed expected behavior:

  • JDK8u: the test case triggers the "Malformed class name" issue and the fix works;
  • JDK11u: the test case does not trigger the "Malformed class name" issue, and the test case is safely skipped.

@rednaxelafx
Copy link
Contributor Author

cc @Ngone51 @cloud-fan @dongjoon-hyun @viirya @HyukjinKwon @maropu

@dongjoon-hyun
Copy link
Member

Thanks for pinging me.

@SparkQA
Copy link

SparkQA commented Sep 25, 2020

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33743/

@SparkQA
Copy link

SparkQA commented Sep 25, 2020

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33743/

@SparkQA
Copy link

SparkQA commented Sep 26, 2020

Test build #129124 has finished for PR 29875 at commit 3f14f68.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@SparkQA
Copy link

SparkQA commented Sep 26, 2020

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33747/

@SparkQA
Copy link

SparkQA commented Sep 26, 2020

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33747/

@SparkQA
Copy link

SparkQA commented Sep 26, 2020

Test build #129129 has finished for PR 29875 at commit d7aeded.

  • This patch fails due to an unknown error code, -9.
  • This patch merges cleanly.
  • This patch adds the following public classes (experimental):
  • test(\"SPARK-32999: TreeNode.nodeName should not throw malformed class name error\")

@viirya
Copy link
Member

viirya commented Sep 26, 2020

retest this please

@SparkQA
Copy link

SparkQA commented Sep 26, 2020

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33751/

@SparkQA
Copy link

SparkQA commented Sep 26, 2020

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33751/

Copy link
Member

@dongjoon-hyun dongjoon-hyun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, LGTM. Thank you, @rednaxelafx and all.
I verified this in JDK8 and JDK11 and confirmed that it's JDK8 only issue as mentioned in the PR description.

Merged to master/3.0.

dongjoon-hyun pushed a commit that referenced this pull request Sep 26, 2020
… class name in TreeNode

### What changes were proposed in this pull request?

Use `Utils.getSimpleName` to avoid hitting `Malformed class name` error in `TreeNode`.

### Why are the changes needed?

On older JDK versions (e.g. JDK8u), nested Scala classes may trigger `java.lang.Class.getSimpleName` to throw an `java.lang.InternalError: Malformed class name` error.

Similar to #29050, we should use  Spark's `Utils.getSimpleName` utility function in place of `Class.getSimpleName` to avoid hitting the issue.

### Does this PR introduce _any_ user-facing change?

Fixes a bug that throws an error when invoking `TreeNode.nodeName`, otherwise no changes.

### How was this patch tested?

Added new unit test case in `TreeNodeSuite`. Note that the test case assumes the test code can trigger the expected error, otherwise it'll skip the test safely, for compatibility with newer JDKs.

Manually tested on JDK8u and JDK11u and observed expected behavior:
- JDK8u: the test case triggers the "Malformed class name" issue and the fix works;
- JDK11u: the test case does not trigger the "Malformed class name" issue, and the test case is safely skipped.

Closes #29875 from rednaxelafx/spark-32999-getsimplename.

Authored-by: Kris Mok <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
(cherry picked from commit 9a155d4)
Signed-off-by: Dongjoon Hyun <[email protected]>
@dongjoon-hyun
Copy link
Member

Hi, @rednaxelafx . Could you make a backport to branch-2.4?

@SparkQA
Copy link

SparkQA commented Sep 27, 2020

Test build #129135 has finished for PR 29875 at commit d7aeded.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds the following public classes (experimental):
  • test(\"SPARK-32999: TreeNode.nodeName should not throw malformed class name error\")

@maropu
Copy link
Member

maropu commented Sep 27, 2020

Thanks for the fix, Kris!

rednaxelafx added a commit to rednaxelafx/apache-spark that referenced this pull request Sep 28, 2020
… class name in TreeNode

Use `Utils.getSimpleName` to avoid hitting `Malformed class name` error in `TreeNode`.

On older JDK versions (e.g. JDK8u), nested Scala classes may trigger `java.lang.Class.getSimpleName` to throw an `java.lang.InternalError: Malformed class name` error.

Similar to apache#29050, we should use  Spark's `Utils.getSimpleName` utility function in place of `Class.getSimpleName` to avoid hitting the issue.

Fixes a bug that throws an error when invoking `TreeNode.nodeName`, otherwise no changes.

Added new unit test case in `TreeNodeSuite`. Note that the test case assumes the test code can trigger the expected error, otherwise it'll skip the test safely, for compatibility with newer JDKs.

Manually tested on JDK8u and JDK11u and observed expected behavior:
- JDK8u: the test case triggers the "Malformed class name" issue and the fix works;
- JDK11u: the test case does not trigger the "Malformed class name" issue, and the test case is safely skipped.

Closes apache#29875 from rednaxelafx/spark-32999-getsimplename.

Authored-by: Kris Mok <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
(cherry picked from commit 9a155d4)
Signed-off-by: Kris Mok <[email protected]>
@rednaxelafx
Copy link
Contributor Author

Hi @dongjoon-hyun , thanks for merging this PR. I've created #29896 for the 2.4 backport.

@dongjoon-hyun
Copy link
Member

Thank you!

holdenk pushed a commit to holdenk/spark that referenced this pull request Oct 27, 2020
… class name in TreeNode

### What changes were proposed in this pull request?

Use `Utils.getSimpleName` to avoid hitting `Malformed class name` error in `TreeNode`.

### Why are the changes needed?

On older JDK versions (e.g. JDK8u), nested Scala classes may trigger `java.lang.Class.getSimpleName` to throw an `java.lang.InternalError: Malformed class name` error.

Similar to apache#29050, we should use  Spark's `Utils.getSimpleName` utility function in place of `Class.getSimpleName` to avoid hitting the issue.

### Does this PR introduce _any_ user-facing change?

Fixes a bug that throws an error when invoking `TreeNode.nodeName`, otherwise no changes.

### How was this patch tested?

Added new unit test case in `TreeNodeSuite`. Note that the test case assumes the test code can trigger the expected error, otherwise it'll skip the test safely, for compatibility with newer JDKs.

Manually tested on JDK8u and JDK11u and observed expected behavior:
- JDK8u: the test case triggers the "Malformed class name" issue and the fix works;
- JDK11u: the test case does not trigger the "Malformed class name" issue, and the test case is safely skipped.

Closes apache#29875 from rednaxelafx/spark-32999-getsimplename.

Authored-by: Kris Mok <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
(cherry picked from commit 9a155d4)
Signed-off-by: Dongjoon Hyun <[email protected]>
dongjoon-hyun pushed a commit that referenced this pull request Sep 25, 2023
### What changes were proposed in this pull request?

In theory, we don't need #29875 anymore because we dropped JDK 8 (according to the PR description in #29875) but `Utils.getSimpleClass` handles malformed class names in any event, so should be safe to keep them.

### Why are the changes needed?

To remove test that does not run. We dropped JDK 11/8 at SPARK-44112

### Does this PR introduce _any_ user-facing change?

No, test-only.

### How was this patch tested?

CI in this PR should test them out.

### Was this patch authored or co-authored using generative AI tooling?

No.

Closes #43092 from HyukjinKwon/SPARK-45305.

Authored-by: Hyukjin Kwon <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants