You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jakarta.apache.org by Aaron Smuts <as...@yahoo.com> on 2010/04/22 15:41:25 UTC
Re: [jira] Created: (JCS-73) concurrent cache access causes values loss
The group functionality will be deprecated. It's already unofficially deprecated. Most of the auxiliaries don't support it. . . . But I look into it.
Aaron
--- On Wed, 4/14/10, Alexander Kleymenov (JIRA) <ji...@apache.org> wrote:
> From: Alexander Kleymenov (JIRA) <ji...@apache.org>
> Subject: [jira] Created: (JCS-73) concurrent cache access causes values loss
> To: jcs-dev@jakarta.apache.org
> Date: Wednesday, April 14, 2010, 9:27 PM
> concurrent cache access causes values
> loss
> ------------------------------------------
>
>
> Key: JCS-73
>
> URL: https://issues.apache.org/jira/browse/JCS-73
>
> Project: JCS
> Issue Type: Bug
> Components: Indexed Disk
> Cache
> Affects Versions: jcs-1.3
> Reporter:
> Alexander Kleymenov
> Assignee: Aaron
> Smuts
>
>
> The following groovy code demonstrates the problem: several
> threads write to the cache and try to read previously
> written values. Sometimes values can be retrieved. In this
> case, subsequent tries can get the value, but not always.
> {code}
> cache = org.apache.jcs.JCS.getInstance("cache")
> group = "group"
> worker = {
> def name = Thread.currentThread().name
> 10000.times { idx ->
> if (idx) {
> // get previously
> stored value
> def res =
> cache.getFromGroup(idx-1, group)
> if (!res) {
> //
> null value got inspite of the fact it was placed in cache!
>
> println "ERROR: for ${idx} in " + name
> //
> try to get the value again:
> def
> n = 5
>
> while (n-- > 0) {
>
> res = cache.getFromGroup(idx-1, group)
>
> if (res) {
>
> // the value finally appeared in
> cache
>
> println "ERROR FIXED for ${idx}:
> ${res} " + name
>
> break
>
> }
>
> println "ERROR STILL PERSISTS for ${idx} in "
> + name
>
> Thread.sleep(1000)
> }
> }
> }
> // put value in the cache
> cache.putInGroup(idx, group,
> [value:[a:1, b:2, c:3], aux:[1:'a', 2:'b', 3:'c', t:name]])
> if (!(idx % 10000)) {
> println name+"
> "+idx
> }
> }
> }
>
> Thread.start worker
> Thread.start worker
> Thread.start worker
> Thread.start worker
> Thread.start worker
> Thread.start worker
> Thread.start worker
> Thread.start worker
> {code}
>
> Cache configuration:
> {code}
> jcs.default=CACHE
> jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
> jcs.default.cacheattributes.MaxObjects=-1
> jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
> jcs.default.cacheattributes.DiskUsagePatternName=UPDATE
> jcs.default.cacheattributes.UseMemoryShrinker=true
> jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=10
> jcs.default.cacheattributes.ShrinkerIntervalSeconds=10
> jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes
> jcs.default.elementattributes.IsRemote=false
> jcs.default.elementattributes.IsLateral=false
> jcs.default.elementattributes.IsSpool=true
> jcs.default.elementattributes.IsEternal=true
>
> jcs.auxiliary.CACHE=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
> jcs.auxiliary.CACHE.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
> jcs.auxiliary.CACHE.attributes.DiskPath=./cache
> jcs.auxiliary.CACHE.attributes.MaxPurgatorySize=-1
> jcs.auxiliary.CACHE.attributes.MaxKeySize=-1
> jcs.auxiliary.CACHE.attributes.MaxRecycleBinSize=500
> jcs.auxiliary.CACHE.attributes.ShutdownSpoolTimeLimit=60
> jcs.auxiliary.CACHE.attributes.OptimizeAtRemoveCount=30000
> jcs.auxiliary.CACHE.attributes.OptimizeOnShutdown=true
> jcs.auxiliary.CACHE.attributes.EventQueueType=SINGLE
> {code}
>
> --
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the
> administrators: https://issues.apache.org/jira/secure/Administrators.jspa
> -
> For more information on JIRA, see: http://www.atlassian.com/software/jira
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jcs-dev-help@jakarta.apache.org
>
>