[
https://issues.apache.org/jira/browse/CAY-1670?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrus Adamchik closed CAY-1670.
--------------------------------
Resolution: Fixed
Fix Version/s: 3.1M4
> Non-blocking DataRowStore
> -------------------------
>
> Key: CAY-1670
> URL: https://issues.apache.org/jira/browse/CAY-1670
> Project: Cayenne
> Issue Type: Improvement
> Components: Core Library
> Affects Versions: 3.1M3
> Reporter: Andrus Adamchik
> Assignee: Andrus Adamchik
> Fix For: 3.1M4
>
>
> Until we decide on unifying object and query caches, it would be cool if we
> could remove the shared lock from DataRowStore that causes issues like
> CAY-1124, and generally creates contention on access from multiple threads.
> We would need some kind of cross-over between LinkedHashMap (that allows to
> set up LRU policies among other things) and ConcurrentHashMap. There are a
> few solutions out there that may provide needed characteristics:
> 1. http://code.google.com/p/concurrentlinkedhashmap/ (the quality is unclear)
> 2. Guava MapMaker
> http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/MapMaker.html
> (is it based on #1?)
> #2 will require a huge 1.7MB Guava lib as a dependency for Cayenne. So maybe
> experiment with #1...
> 3. Also was thinking of useing JDK ConcurrentHashMap, and implementing a FIFO
> eviction mechanism instead of LRU. FIFO should be easier to implement in our
> code. This change has a chance to cause havoc in Cayenne though (snapshots
> just loaded would get kicked out within the same transaction).
> Another issue which is agnostic to whatever implementation we'd chose, is
> what happens when certain operations become non-atomic when we remove
> synchronized blocks:
> synchronized (this) {
> processDeletedIDs(deletedSnapshotIds);
> processInvalidatedIDs(invalidatedSnapshotIds);
> processUpdateDiffs(diffs);
> sendUpdateNotification(
> event.getPostedBy(),
> diffs,
> deletedSnapshotIds,
> invalidatedSnapshotIds,
> indirectlyModifiedIds);
> }
> Anyways this will require some research and testing.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira