Here is a potentially disruptive change to Cayenne core:

http://svn.apache.org/viewvc?view=revision&revision=1292437
(also see https://issues.apache.org/jira/browse/CAY-1670 )

This removes the major global lock and has a potential to significantly 
increase throughput (which is an issue, see CAY-1124 by Tore for instance). The 
implementation is based on a previously untried by us data structure - 
ConcurrentLinkedHashMap - http://code.google.com/p/concurrentlinkedhashmap/ . 
It is used by Apache Cassandra, so presumably it works and can handle the load. 
I internalized this code, placing it under 
org.apache.cayenne.util.concurrentlinkedhashmap.

I need help with testing though... Maybe someone has any kind of load tests 
that can emulate multiple DataContexts attached to a single ServerRuntime and 
performing various select/modify operations? Or maybe you are daring enough to 
place this in production? I will do the same on my end.

To give some reassurance, our single-threaded unit tests pass 100% with no 
changes after I swapped commons-collections LRUMap to ConcurrentLinkedHashMap. 

Appreciate feedback on this feature!

Thanks,
Andrus

Reply via email to