Uh oh!
There was an error while loading. Please reload this page.
[SPARK-19999]: Workaround JDK-8165231 to identify PPC64 architectures as supporting unaligned access - #17472
[SPARK-19999]: Workaround JDK-8165231 to identify PPC64 architectures as supporting unaligned access#17472samelamin wants to merge 6 commits into
Conversation
There was a problem hiding this comment.
Would it be possible to add appropriate space between words?
There was a problem hiding this comment.
I think you can perform this check up top? you don't need to do all the reflection here if the arch matches. Also is it true that anything starting with "ppc64" should be special-cased?
samelamin
commented
Mar 29, 2017
There was a problem hiding this comment.
Indent issues.
Please follow the style guide: https://github.com/databricks/scala-style-guide#indent
There was a problem hiding this comment.
I think its to do with my local setup, i dont see the issues in Intellij, sorry! :(
ill revert my changes and try again
samelamin
commented
Mar 29, 2017
@gatorsmile I think my Intellij has some annoying auto indenting changes. Does spark have some project wide settings I can auto import? |
gatorsmile
commented
Mar 29, 2017
I do not think we have such a default steup. You can manually change the indentation of InteiiJ |
samelamin
commented
Mar 29, 2017
ok @gatorsmile i set default indentation to 2, how does it look now? |
| if (arch.matches("^(ppc64le | ppc64)$")) { | ||
| _unaligned = true; | ||
| } else { | ||
| //Since java.nio.Bits.unaligned() doesn't return true on ppc (See JDK-8165231) |
There was a problem hiding this comment.
Moving this comment to line 50?
Maybe you also need to explain it more clearly.
Since java.nio.Bits.unaligned() doesn't return true on ppc (See JDK-8165231), but ppc64 and ppc64le support it
samelamin
commented
Mar 29, 2017
@gatorsmile moved the comment per your suggestion, but to be honest if the comment is unclear surly the first thing someone will do is check that JIRA? |
| //noinspection DynamicRegexReplaceableByCompiledPattern | ||
| _unaligned = arch.matches("^(i[3-6]86|x86(_64)?|x64|amd64|aarch64)$"); | ||
| if (arch.matches("^(ppc64le | ppc64)$")) { | ||
| // Since java.nio.Bits.unaligned() doesn't return true on ppc (See JDK-8165231), but ppc64 and ppc64le support it |
There was a problem hiding this comment.
It is longer than 101 characters. It will fail the style test.
You can check it in your local environment using the command:
dev/lint-scala
gatorsmile
commented
Mar 29, 2017
ok to test |
gatorsmile
commented
Mar 29, 2017
Clear code comments can help code reading. : ) |
SparkQA
commented
Mar 29, 2017
Test build #75372 has finished for PR 17472 at commit
|
| _unaligned = Boolean.TRUE.equals(unalignedMethod.invoke(null)); | ||
| } catch (Throwable t) { | ||
| // We at least know x86 and x64 support unaligned access. | ||
| String arch = System.getProperty("os.arch", ""); |
There was a problem hiding this comment.
Should we define arch before the if statement, now?
There was a problem hiding this comment.
your absolutely right, I got caught off while I was trying to fix the indentation issues. good catch!
SparkQA
commented
Mar 30, 2017
Test build #75380 has started for PR 17472 at commit |
samelamin
commented
Mar 30, 2017
jenkins test this please |
samelamin
commented
Mar 30, 2017
Can someone guide me why the tests failed? is it another flakey test or? because the below message doesnt make sense to me :(
|
srowen
left a comment
There was a problem hiding this comment.
I think the test failure is unrelated. The title of the JIRA/PR should be changed; they aren't flaky tests. You're trying to accommodate a new architecture that isn't really supported.
| //noinspection DynamicRegexReplaceableByCompiledPattern | ||
| _unaligned = arch.matches("^(i[3-6]86|x86(_64)?|x64|amd64|aarch64)$"); | ||
| String arch = System.getProperty("os.arch", ""); | ||
| if (arch.matches("^(ppc64le | ppc64)$")) { |
There was a problem hiding this comment.
Still, why not arch.startsWith("ppc64")?
There was a problem hiding this comment.
Title changed, but I dont have access to change the jira title?
Re string matching - Thats fine but itll end up being arch.startsWith("ppc64") || arch.startsWith("ppc64le")
I thought this was less code, but startsWith is more readable
Are you happy with that approach?
There was a problem hiding this comment.
Both of those start with ppc64, what do you mean? I guess my question is, is there a big-endian PPC64 arch?
There was a problem hiding this comment.
yeah sorry complete fail, didnt see that lol
With regards to a big-endian PPC64 arch , I dont think so but I am not 100% sure. that said as it stands it isn't supported and the test fails. So happy to change the PR or even close it if you do not see any value it adds
There was a problem hiding this comment.
Sorry, I'm writing one thing and thinking another. I mean alignment, not endianness. Which architectures do you know allow unaligned access? I'd presume all PPC does, and I assume the JDK issue means "PPC64 (big-endian) but also PPC64 little-endian". OK, to be conservative, maybe just check the strings "ppc64" and "ppc64le" as you intended.
However your regex doesn't work. You have extra whitespace. Just instead check arch.equals(...) || arch.equals(...)
Also the PR title shoudl match the JIRA title. I was commenting that it differed here in referring to a flaky test, but it isn't. To be very clear, I propose you rename both to perhaps: "Workaround JDK-8165231 to identify PPC64 architectures as supporting unaligned access"
There was a problem hiding this comment.
haha its fine, called it rubber duck programming eh
Sure I will make those changes, but I have no rights to rename the JIRA
So I will rename this PR, can you get yourself or someone to rename the JIRA?
SparkQA
commented
Mar 30, 2017
Test build #75386 has finished for PR 17472 at commit
|
samelamin
commented
Mar 30, 2017
@gatorsmile@srowen how does it look now? |
gatorsmile
commented
Mar 30, 2017
LGTM |
srowen
commented
Mar 30, 2017
Merged to master |
…PPC64 architectures as supporting unaligned access ## What changes were proposed in this pull request? This PR is backport of #17472 to Spark 2.1 java.nio.Bits.unaligned() does not return true for the ppc64le arch. see [https://bugs.openjdk.java.net/browse/JDK-8165231](https://bugs.openjdk.java.net/browse/JDK-8165231) Check architecture in Platform.java ## How was this patch tested? unit test Author: Kazuaki Ishizaki <ishizaki@jp.ibm.com> Closes#17509 from kiszk/branch-2.1.
java.nio.Bits.unaligned() does not return true for the ppc64le arch.
see https://bugs.openjdk.java.net/browse/JDK-8165231
What changes were proposed in this pull request?
check architecture
How was this patch tested?
unit test