You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by bu...@apache.org on 2004/07/21 22:34:02 UTC
DO NOT REPLY [Bug 30243] New: -
Content Caching?
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=30243>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=30243
Content Caching?
Summary: Content Caching?
Product: Slide
Version: 2.0
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: Normal
Priority: Other
Component: Stores
AssignedTo: slide-dev@jakarta.apache.org
ReportedBy: tara.talbott@pnl.gov
The content cache doesn't appear to be caching successfully. Every time I
access content Extended Store attempt to recache the content. I noticed a
long time ago on the dev list that someone mentioned that this wasn't working
correcly(msg #06671). Was this ever fixed? If it hasn't, here is my fix to
the put method of ByteSizeLimitedObjectCache which fixes the problem for me.
public Object put(Object key, Object value, long byteSize) {
// is it too big to be cached?
if (byteSize > maxByteSizePerEntry || byteSize > maxByteSize) {
if (loggingEnabled) {
logger.log(txId + " for '" + key + "' is too big to be
cached", logChannel, Logger.DEBUG);
}
Object oldValue = get(key);
// invalidate previous entry if present
// XXX this relies on an implementation detail in
TxLRUByteCache.put
// removal from delete cache must be done before trying to add
to
// change cache using this method; if not our undoing will be
partly
// undone (again) in TxLRUObjectCache.put
invalidate(key);
return oldValue;
} else {
// be sure to return allocated bytes before readding
//freeBytes(key);
// ok, we decided to cache this entry, make room for it
for (int i = 0; globalSize + byteSize > maxByteSize && i <
MAX_FREEING_TRIES; i++) {
if (loggingEnabled) {
logger.log(
txId
+ " for '"
+ key
+ "' needs "
+ Long.toString(globalSize + byteSize -
maxByteSize)
+ " bytes more to be cached. Freeing bytes!",
logChannel,
Logger.DEBUG);
}
// this will call back processRemovedLRU and will thus
free bytes
removeLRU();
}
}
// was this successful?
if (globalSize + byteSize <= maxByteSize) {
shadowSizes.put(key, new Long(byteSize));
globalSize += byteSize;
return super.put(key, value);
} else {
Object oldValue = get(key);
invalidate(key);
return oldValue;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org