RE: [coldbox:3051] Re: CacheManager: Cannot find LastAccessTimeout key in struct

Luis, I would do almost anything for you and a T-shirt... well, the
T-shirt mainly. :slight_smile:



I am making lots of updates thanks to your feedback and revamping not only the policies but the way reaping is done. By any chance, do you have the load template testing you did? I would love to add this to my test suites so I can run it and check out performance?

I did also updates to the uuid deal. The funny thing is that railo’s createUUID() is blazingly fast. Anyways, I had to change the way I do ids in some place. Some are real random id’s ther are just identity codes, so I updated most of how this works and the performance on adobe cf is considerable!! so thank you so much!!

Again, the cache is my true passion and will be updating this weekend. So thanks so much for the feedback.


Ok Brad,

I made tons of updates to the cache manager dealing with concurrancy, uuid generations, new eviction policies and also the eviction of eternal objects when maximum hits, new checking of new metadata field, isExpired, to demarcate expired objects by the eviction policies so they can be picked up by the reaper.

I have also done several load tests and it seems to fly.

Please try out the updates and let me know what performance and response you get.


I know it’s BER… but i found this error in SVN in the LFU.cfc this morning … Missing a ; after $log line.

// Get searchable index
LFUIndex = structSort(poolMD,“numeric”, “ASC”, “hits”);
catch(Any e){
$log(“error”,“Error sorting metadata pool. #e.message# #e.detail#. Serialized Pool: #poolMD.toString()#”)
indexLength = ArrayLen(LFUIndex);


Thanks Adam,

Fixed and its in SVN now.

We have to remember that ";" is not optional :slight_smile:
Anyway ";" is optional in Railo.


Thanks Sana,

It was missing in all of the policys other then the abstracteviction… Let me update and get back to work now :wink:

My load tests ran very nicely and just found another area of
optimization that will commott soon. However, the updates now address
multiple issues as brad pointed out

policies have been totally reworked and should run faster an not
expire the same objects all over again. It now diatinguihes when an
obbject has been marked for eviction

metadata access is now locked for concurrency issues.

Reaping reworked to be optimized for multiple threads reaping and also
locked access to object metadata

set optimized to do one thrshold check instead of two

getibjectmetadata optimized and Locke for concurrency.

Expirations work on key traversal only instead of metadata which makes it faster

object pool now has better locking names

object pool now has an expireobject method to encapsulate evictions

wow you want more?