Ok, pushed what I had to push.

Open question: how do we structure the project. Keeping it along
jcs-core seems quite inconsistent. Do we consider jcache impl as a
subproject?


Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau


2014-05-07 23:30 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com>:
> trunk should be in phase with this (ConcurrentHashMap). I'll test it
> further tomorrow (hope to find time) but any review would be welcomed.
>
> Main things which can be enhance I guess are the eviction rules
> (org.apache.commons.jcs.jcache.JCSCache#evict).
>
> Then I plan to add few utilities in jcache-extra module
> (CompositeCacheLoader, CompositeCacheWriter, AsyncCacheLoader,
> AsyncCacheWriter, SingleItemCacheLoader, SingleItemCacheWriter,...all
> implementing Factory too to make it nicer in the MutableConfiguration
> API)
>
> Then JCache should be ok for a release.
>
> Any objection (mainly on the fact we don't rely on jcs-core)?
>
>
> Romain Manni-Bucau
> Twitter: @rmannibucau
> Blog: http://rmannibucau.wordpress.com/
> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> Github: https://github.com/rmannibucau
>
>
> 2014-05-06 22:39 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com>:
>> That's my experience too. So let's go for the concurrenthashmap impl
>> (patch on jira) and then see how we do the invalidation stuff in a
>> 2.1?
>>
>>
>> Romain Manni-Bucau
>> Twitter: @rmannibucau
>> Blog: http://rmannibucau.wordpress.com/
>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>> Github: https://github.com/rmannibucau
>>
>>
>> 2014-05-06 19:54 GMT+02:00 Mark Struberg <strub...@yahoo.de>:
>>> Well my personal experience only:
>>>
>>>
>>> 1.) I barely use distributed caches. I use ehcache in most of my projects 
>>> as of today, but do not use the distribution feature much. Way too 
>>> complicated
>>>
>>> 2.) What actually IS useful is distributed cache invalidation. The caching 
>>> side is fine to just select any values from my DB if they are not yet 
>>> cached. But if I change those values, then I really need some ways to get 
>>> rid of the values in all the caches on all my cluster nodes.
>>>
>>> So from a purely personal point I would favour a mode which is really fast 
>>> as a local cache but would have some ways to distribute the invalidation of 
>>> a cache to all other nodes.
>>>
>>> Not sure how this fits into jcs - don't know the codebase well enough to 
>>> judge about it.
>>>
>>> LieGrue,
>>> strub
>>>
>>>
>>> On Tuesday, 6 May 2014, 13:29, Romain Manni-Bucau <rmannibu...@gmail.com> 
>>> wrote:
>>>
>>> Here some pseudo-core details about my first mail:
>>>>
>>>>New internals:
>>>>* NetworkTopology
>>>>* EntryRepartitor: compute the index of the
>>>>* Node (LocalNode which is current impl and RemoteNode which is just a
>>>>remote facade relying Network)
>>>>
>>>>NetworkTopology { // impl using udp/tcp/or whatever
>>>>     Node[] findAll() // used by a background thread to check if there
>>>>is a new node and if so rebalance the cluster
>>>>}
>>>>
>>>>Node { // remote and local API
>>>>     get(k), put(k, v) .... (Cache<K, V> primitive methods)
>>>>     Statistics getStatistics() // used by a background thread to
>>>>aggregate stats on each node
>>>>}
>>>>
>>>>
>>>>EntryRepartitor {
>>>>     Node[] nodeAndBackups(key)
>>>>}
>>>>
>>>>
>>>>get(key) { // symmetrical for put of course
>>>>    Node[] nodes = entryRepartitor.nodeAndBackups(key);
>>>>    for (final Node node : nodes) {
>>>>         try {
>>>>             return node.get(key);
>>>>         } catch(final RemoteCacheException rce) { // API exception
>>>>             throw rce.getJCacheException();
>>>>         } catch(final Exception e) { // network exception try next node
>>>>            // continue
>>>>         }
>>>>    }
>>>>}
>>>>
>>>>Of course we'll get LocalNode implementing Node with the current impl
>>>>(ConcurrentHashMap) and RemoteNode will be a client view of the
>>>>LocalNode over the network.
>>>>
>>>>To keep it testable we need to be able to test a RemoteNode ->
>>>>LocalNode connection in the same JVM creating manually two
>>>>CachingProviders.
>>>>
>>>>wdyt?
>>>>
>>>>
>>>>Romain Manni-Bucau
>>>>Twitter: @rmannibucau
>>>>Blog: http://rmannibucau.wordpress.com/
>>>>LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>>>Github: https://github.com/rmannibucau
>>>>
>>>>
>>>>
>>>>2014-05-06 12:50 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com>:
>>>>> FYI I attached a patch using a ConcurrentHashMap here
>>>>> https://issues.apache.org/jira/browse/JCS-127
>>>>>
>>>>> It is pretty fast compared to previous impl.
>>>>>
>>>>>
>>>>> Romain Manni-Bucau
>>>>> Twitter: @rmannibucau
>>>>> Blog: http://rmannibucau.wordpress.com/
>>>>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>>>> Github: https://github.com/rmannibucau
>>>>>
>>>>>
>>>>> 2014-05-06 8:31 GMT+02:00 Romain Manni-Bucau <rmannibu...@gmail.com>:
>>>>>> Hi guys,
>>>>>>
>>>>>> few questions about jcs:
>>>>>>
>>>>>> 1) I played a bit with remote cache server etc and didn't find a lot
>>>>>> of use cases, do we keep it this way (linked to 4) )?
>>>>>> 2) API: do we use JCache as main API or do we keep core?
>>>>>> 3) Reviewing JCache module I really wonder if we shouldn't use a
>>>>>> ConcurrentHashMap instead of a the currently backing CompositeCache
>>>>>> and add on top of this "locally optimized" implementation two things:
>>>>>> a) eviction (a thread regularly iterating over local items to check
>>>>>> expiry would be enough), b) distribution (see 4) )
>>>>>> 4) distributed mode: I wonder if we shouldn't rethink it and
>>>>>> potentially add Cache<K, V> listeners usable in JCache to know if
>>>>>> another node did something (useful to get consistent stats at least -
>>>>>> basically we need a way to aggregate on each note stats) + use a key
>>>>>> for each node to keep data on a single node + potentially add backup
>>>>>> on another node.
>>>>>>
>>>>>> wdyt?
>>>>>>
>>>>>> I don't know how much JCS is used ATM and if we can break that much
>>>>>> the API but since that would be a 2.0 I think it is the moment
>>>>>>
>>>>>>
>>>>>> Romain Manni-Bucau
>>>>>> Twitter: @rmannibucau
>>>>>> Blog: http://rmannibucau.wordpress.com/
>>>>>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>>>>> Github: https://github.com/rmannibucau
>>>>
>>>>---------------------------------------------------------------------
>>>>To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>For additional commands, e-mail: dev-h...@commons.apache.org
>>>>
>>>>
>>>>
>>>>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to