hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hiroshi Ikeda (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-10656) high-scale-lib's Counter depends on Oracle (Sun) JRE, and also has some bug
Date Mon, 03 Mar 2014 07:54:21 GMT
Hiroshi Ikeda created HBASE-10656:
-------------------------------------

             Summary:  high-scale-lib's Counter depends on Oracle (Sun) JRE, and also has
some bug
                 Key: HBASE-10656
                 URL: https://issues.apache.org/jira/browse/HBASE-10656
             Project: HBase
          Issue Type: Bug
            Reporter: Hiroshi Ikeda
            Priority: Minor


Cliff's high-scale-lib's Counter is used in important classes (for example, HRegion) in HBase,
but Counter uses sun.misc.Unsafe, that is implementation detail of the Java standard library
and belongs to Oracle (Sun). That consequently makes HBase depend on the specific JRE Implementation.

To make matters worse, Counter has a bug and you may get wrong result if you mix a reading
method into your logic calling writing methods.

In more detail, I think the bug is caused by reading an internal array field without resolving
memory caching, which is intentional the comment says, but storing the read result into a
volatile field. That field may be not changed after you can see the true values of the array
field, and also may be not changed after updating the "next" CAT instance's values in some
race condition when extending CAT instance chain.

Anyway, it is possible that you create a new alternative class which only depends on the standard
library. I know Java8 provides its alternative, but HBase should support Java6 and Java7 for
some time.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message