[
https://issues.apache.org/jira/browse/HBASE-22114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16809965#comment-16809965
]
Sean Busbey commented on HBASE-22114:
-------------------------------------
{quote}
Also, it looks like javadoc was invoked on the tinylfu module under java 7 even
though that module is only ever conditionally defined and required from the
build-with-jdk8 profile, which has an activation predicate of jdk=1.8. Doesn't
happen when you build normally from the command line. I'm inclined to think
this is an issue with how Yetus decides what has changed and how Maven is
invoked to test those changes.
{quote}
yes it is. It detects that a module is present and expressly invokes maven to
build it, which we would tell folks not to do.
I think the patch looks good fundamentally. I'm concerned we'll break precommit
on branch-1 for good though.
Let me dedicate some time tomorrow to trying to untangle this.
> Port HBASE-15560 (TinyLFU-based BlockCache) to branch-1
> -------------------------------------------------------
>
> Key: HBASE-22114
> URL: https://issues.apache.org/jira/browse/HBASE-22114
> Project: HBase
> Issue Type: Sub-task
> Reporter: Andrew Purtell
> Assignee: Andrew Purtell
> Priority: Major
> Fix For: 1.6.0
>
> Attachments: HBASE-22114-branch-1.patch, HBASE-22114-branch-1.patch,
> HBASE-22114-branch-1.patch
>
>
> HBASE-15560 introduces the TinyLFU cache policy for the blockcache.
> W-TinyLFU ([research paper|http://arxiv.org/pdf/1512.00727.pdf]) records the
> frequency in a counting sketch, ages periodically by halving the counters,
> and orders entries by SLRU. An entry is discarded by comparing the frequency
> of the new arrival (candidate) to the SLRU's victim, and keeping the one with
> the highest frequency. This allows the operations to be performed in O(1)
> time and, though the use of a compact sketch, a much larger history is
> retained beyond the current working set. In a variety of real world traces
> the policy had [near optimal hit
> rates|https://github.com/ben-manes/caffeine/wiki/Efficiency].
> The implementation of HBASE-15560 uses several Java 8 idioms, depends on JRE
> 8+ type Optional, and has dependencies on libraries compiled with Java 8+
> bytecode. It could be backported to branch-1 but must be made optional both
> at compile time and runtime, enabled by the 'build-with-jdk8' build profile.
> The TinyLFU policy must go into its own build module.
> The blockcache must be modified to load L1 implementation/policy dynamically
> at startup by reflection if the policy is "TinyLFU"
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)