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)