>This should probably deprecated for the remove matching method

I see these off of the JCS object:

http://jakarta.apache.org/jcs/apidocs/org/apache/jcs/access/CacheAccess.html#getMatching(java.lang.String)


http://jakarta.apache.org/jcs/apidocs/org/apache/jcs/access/CacheAccess.html#getMatchingCacheElements(java.lang.String)

I don't see a remove so do I need to use these to get the keys then call remove?


-----Original Message-----
From: Aaron Smuts [mailto:asm...@yahoo.com] 
Sent: Wednesday, August 12, 2009 8:52 AM
To: JCS Users List
Subject: RE: index cache corruption


So were you getting back the wrong data or data that should have been deleted?  

Are you running a recent temp build?

I'll dig into the partial key removal.  This should probably deprecated for the 
remove matching method. . . .  Either way, it should work.

Aaron

--- On Tue, 8/11/09, Tim Cronin <tim.cro...@autonomy.com> wrote:

> From: Tim Cronin <tim.cro...@autonomy.com>
> Subject: RE: index cache corruption
> To: "JCS Users List" <jcs-users@jakarta.apache.org>
> Date: Tuesday, August 11, 2009, 2:30 PM
> Good to know, thanks.
> 
> Yes that's when we see it too, under high load. 
> 
> For us it seems to happen around removes, we use the key:
> linkage and
> It happens to data that's linked and would get cleared with
> the key:
> call.
> 
> 
> -----Original Message-----
> From: Al Forbes [mailto:forbes...@googlemail.com]
> 
> Sent: Tuesday, August 11, 2009 4:13 PM
> To: JCS Users List
> Subject: Re: index cache corruption
> 
> Hi Tim,
> 
> I had the same problem. It seems to happen under high load,
> with fairly
> large objects, but I could not reproduce it offline. I
> changed to using
> a
> JDBC cache and have not had a problem since then.
> 
> We still use disk caches for more static data - mostly read
> only, and
> the
> problem never happens there, so I assume it's the writes
> that cause the
> corruption.
> 
> Regards
> Al
> 
> 2009/8/11 Tim Cronin <tim.cro...@autonomy.com>
> 
> > 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
> 
> 

---------------------------------------------------------------------
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

Reply via email to