cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aristedes Maniatis <>
Subject Re: Non-blocking DataRowStore - need help to test
Date Fri, 24 Feb 2012 07:38:37 GMT
On 24/02/12 8:05 AM, Benjamin Manes wrote:
> Hi,
> I'm the author of CLHM, brought to you by a friendly Google alert. :)

Hi Ben

> If Cayenne is currently using Guava, then there won't be a dependency increase. I helped
rearchitect MapMaker and design its replacement, CacheBuilder, which are based on CLHM's algorithms.
This is a more feature-rich implementation with the support of a team at Google (whereas CLHM
is my weekend project). We also fixed my mistake of only weighing by value, since I hadn't
realized how popular memory-based weighing would be (I was trying to avoid unbounded collections
as values).

Very interesting. Will you be bringing the LIRS features across to CacheBuilder as well?

Also, would it be hard to limit the size of the cache in bytes rather than number of entries?

> Technically CLHM provides more concurrency than CacheBuilder by not relying on segment
locks and later using a lock-free ring buffer. These will be an advantage when it is backed
by JDK8's new CHM (see ConcurrentHashMapV8) or Cliff Click's NBHM. A JSR-166 implementation
will be a marriage of CHMv8, CLHM, and CacheBuilder.

Isn't JSR166 already finished?

> CLHM is back-ported to JDK5 on every release, so you'll find the JDK5 source under /tags.
I do development on /trunk assuming JDK6.
> Feel free to file issues against CLHM (or Guava) if you'd like enhancements to either.
Both are used in large production environments.

Andrus, I notice that CacheBuilder can be set to concurrency=1 which means that write operations
are sequential even though read operations are still concurrent. Would that help at all with
the testing concern you have?


> Cheers,
> Ben

Aristedes Maniatis
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A

View raw message