Ard Schrijvers wrote:
Ard Schrijvers wrote:

I can suggest you two easy enhancements to improve the situation.

1. Stores should have configuration which specifies whether store should register itself with the StoreJanitor or not. Default transient store can be configured to *not* register with janitor, so that all your XSLTs stay in memory.

StatusGenerator can't give the status of stores not registered to the StoreJanitor. I 
would rather still register them to the StoreJanitor, but configure them not to be 
"cleared" by the StoreJanitor

2. StoreJanitor can have another eviction algorithm, namely, it should have an option to remove configured % of entries from *all* registered stores. So that it empties some part of all stores on each eviction run. It would make system behavior more even and stable, in situations were there are multiple stores with varying object sizes.

This in combination with (1) would then change into removing entries from *all 
stores configured to be clearable by the StoreJanitor*. Rest seems fine to me

Right, this will achieve the same effect.

<snip/>

So, in the StoreJanitor, I check now wether the store is
instanceof EHDefaultStore,

That's a really bad idea, in and by itself. Never rely on concrete implementations, always work against contracts (interfaces).

Ok. I try and see if there is another way to get this in. I still have to do 
the following changes then

1) StoreJanitor to only free cache/memory from stores configured to
2) Change the EHDefaultStore the "public int size()"  to return the 
memoryStoreSize()
3) Change the free() in EHDefaultStore according to the correct eviction policy. This might need changes in the ehcache.
I think this meets your requirements as well, right?

Looks good.

Vadim

Reply via email to