I've never seen anything of the sort! The indexed disk cache would be unusable if it had this problem. And I use it extensively.
I suspect that you have a bad equals method on your objects. Are you still seeing this? Aaron --- On Tue, 8/11/09, Tim Cronin <tim.cro...@autonomy.com> wrote: > From: Tim Cronin <tim.cro...@autonomy.com> > Subject: index cache corruption > To: "JCS Users List" <jcs-users@jakarta.apache.org> > Date: Tuesday, August 11, 2009, 11:35 AM > We initially were using indexed disk > cache but ran into cache corruption > where the data returned for a key would not be the data > associated for > that key. I haven't been able to come up with a good repro > scenario... > > We had to work around it with the following code: > > /** > * is the cache element not the correct > object for the key > * @param key the current key > * @param element the current element > associated with the key > * @param hasReadLock whether caller has > read lock > * @return true if key mismatch els false > * @throws InterruptedException if locking > fails > */ > private boolean isCorrupt(String key, ICacheElement > element, boolean > hasReadLock) throws InterruptedException > { > boolean corrupt = > !key.equals(element.getKey()); > if (corrupt) > { > mLogger.error("cache corruption!!! [" > + (mCorruptionCounter++) + > "]"); > > if (mLogger.isDebugEnabled()) > { > mLogger.error("culprit > stack...", new Exception("cache > corruption")); > } > > try > { > if (hasReadLock) > { > > mLock.readLock().release(); > } > mLock.writeLock().acquire(); > try > { > mLogger.error("purging " > + key); > mCache.remove(key); > mCache.remove(key + > ":"); > } > catch (Exception e) > { > mLogger.error("failed to > purge key " + key, e); > } > try > { > String k = > (String)element.getKey(); > mLogger.error("purging " > + k); > mCache.remove(k); > mCache.remove(k + ":"); > } > catch (Exception e) > { > mLogger.error("failed to > purge key " + element.getKey(), e); > } > } > finally > { > if (hasReadLock) > { > > mLock.readLock().acquire(); > } > mLock.writeLock().release(); > } > } > return corrupt; > } > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: jcs-users-unsubscr...@jakarta.apache.org > For additional commands, e-mail: jcs-users-h...@jakarta.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: jcs-users-unsubscr...@jakarta.apache.org For additional commands, e-mail: jcs-users-h...@jakarta.apache.org