On Feb 23, 2012, at 4:10 AM, Aristedes Maniatis wrote:

> * ConcurrentLinkedHashMap seems to have a roadmap 
> http://code.google.com/p/concurrentlinkedhashmap/wiki/Changelog and ongoing 
> development. Since this is the case, is it wise to fork it into the Cayenne 
> source rather than link to the built artifacts and make it easier to update 
> in the future?

There are a few considerations. First, my general aversion to expanding the 
list of dependencies. Aside from that ConcurrentLinkedHashMap is written for 
Java 1.6. We are supporting 1.5, so I had to transform the original source to 
conform. So the plan is to merge changes made on the ConcurrentLinkedHashMap 
side if we need them. 

> * How does this new code interact and relate to third party caches such as 
> OScache when used in Cayenne? I was never 100% clear about how the old one 
> interacted, and I guess nothing much had changed in this regard, but it would 
> be good to understand this better.

This is snapshot cache. It does not interact with query caches at all at this 
point. But see below.

> * I see that version 2.0 will allow for pluggable eviction policies (They 
> will switch between LRU and LIRS). And they mention the idea of weighting by 
> key/value. Any thoughts about whether that would be useful to Cayenne to be 
> able to implement even more flexible policies, particularly given the demise 
> of OScache?

A unified (objects, snapshots, query results) caching solution is a #1 feature 
for Cayenne 3.2 on my list. Once we start looking at that, it may turn out that 
ConcurrentLinkedHashMap is only a stopgap measure until we can load snapshots 
into a unified cache. 

In any event it is useful to start playing with it now, as there's another 
synchronization aspect of the DataRowStore that is provider-agnostic - 
per-commit snapshots processing used to be done atomically with DataRowStore 
locked. Now each snapshot is processed independently, so in a multithread 
environment the order of snapshot processing can get mixed up. My assertion is 
that it doesn't matter, but I'd like to prove that somehow.

Andrus


Reply via email to