You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by el...@apache.org on 2017/04/11 17:31:18 UTC
[13/54] [abbrv] hbase git commit: HBASE-17869 UnsafeAvailChecker
wrongly returns false on ppc
HBASE-17869 UnsafeAvailChecker wrongly returns false on ppc
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/af604f0c
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/af604f0c
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/af604f0c
Branch: refs/heads/HBASE-16961
Commit: af604f0c0cf3c40c56746150ffa860aad07f128a
Parents: 9109803
Author: Jerry He <je...@apache.org>
Authored: Thu Apr 6 16:04:47 2017 -0700
Committer: Jerry He <je...@apache.org>
Committed: Thu Apr 6 16:04:47 2017 -0700
----------------------------------------------------------------------
.../hadoop/hbase/util/UnsafeAvailChecker.java | 24 ++++++++++++--------
1 file changed, 15 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/af604f0c/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAvailChecker.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAvailChecker.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAvailChecker.java
index 90e6ec8..886cb3c 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAvailChecker.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/UnsafeAvailChecker.java
@@ -51,15 +51,21 @@ public class UnsafeAvailChecker {
});
// When Unsafe itself is not available/accessible consider unaligned as false.
if (avail) {
- try {
- // Using java.nio.Bits#unaligned() to check for unaligned-access capability
- Class<?> clazz = Class.forName("java.nio.Bits");
- Method m = clazz.getDeclaredMethod("unaligned");
- m.setAccessible(true);
- unaligned = (Boolean) m.invoke(null);
- } catch (Exception e) {
- LOG.warn("java.nio.Bits#unaligned() check failed."
- + "Unsafe based read/write of primitive types won't be used", e);
+ String arch = System.getProperty("os.arch");
+ if ("ppc64".equals(arch) || "ppc64le".equals(arch)) {
+ // java.nio.Bits.unaligned() wrongly returns false on ppc (JDK-8165231),
+ unaligned = true;
+ } else {
+ try {
+ // Using java.nio.Bits#unaligned() to check for unaligned-access capability
+ Class<?> clazz = Class.forName("java.nio.Bits");
+ Method m = clazz.getDeclaredMethod("unaligned");
+ m.setAccessible(true);
+ unaligned = (Boolean) m.invoke(null);
+ } catch (Exception e) {
+ LOG.warn("java.nio.Bits#unaligned() check failed."
+ + "Unsafe based read/write of primitive types won't be used", e);
+ }
}
}
}