I've recently run into some trouble with my get() calls returning less history
entries than expected and have tracked the problem down to my history queue
sizes and the CacheQueueInterceptorPlugin.peak(int, int) method. Maybe it was
designed this way on purpose, but to me the implementation seems to have a bug:
public ArrayList peek(int numOfEntries, long numOfBytes) throws
XmlBlasterException {
synchronized(this.peekSync) {
return this.transientQueue.peek(numOfEntries, numOfBytes);
}
}
In my scenario I often only need to access the most recent message on a topic,
but occasionally need to access the full history. It makes sense to me to
configure my history queue like this:
queue/history/maxEntriesCache = 1
queue/history/maxEntries = 1000
so that I only cache what I use the most but still have a large amount of
history available when necessary. This is where the peek implementation
becomes a problem, since a get() call is forwarded to the topic's history queue
I can never get more history than the maxEntriesCache parameter. What is the
purpose of being able to store more entries persistently if I can only ever
access the number of transient entries? Shouldn't the implementation look more
like (pseudocode)
if (numEntries == -1 || numEntries > transientQueue.getMaxNumEntries()) {
return this.persistentQueue.peek(numOfEntries, numOfBytes());
} else {
return this.transientQueue.peek(numOfEntries, numOfBytes);
}
?
Thanks,
Craig McIlwee
Open Roads Consulting, Inc.
757-546-3401
http://www.openroadsconsulting.com
This e-mail communication (including any attachments) may contain confidential
and/or privileged material intended solely for the individual or entity to
which it is addressed. If you are not the intended recipient, you should
immediately stop reading this message and delete it from all computers that it
resides on. Any unauthorized reading, distribution, copying or other use of
this communication (or its attachments) is strictly prohibited. If you have
received this communication in error, please notify us immediately.