On 05/02/2007, at 11:01 AM, Jason van Zyl wrote:
I think there is something wrong in that we would need a cache.
It's bleeding memory why and how is a cache implementation over a
HashMap going to help?
It's bleeding memory because there are thousands of POMs in the
repository, and the hashmap has no limiting. A cache would allow them
to be expired, size, limited, etc. so the memory consumption is fixed.
And how long does it really take to build up a MavenProject. In the
CLI working in the reactor it helps using a HashMap.
Not really understanding here. Are you saying no cache is necessary,
or it can be done elsewhere? Dependency POMs are built many times
across the life of a maven build, so the cache is certainly improving
performance compared to reading them back from the file system in the
local repository.
In something like Archiva the model should be placed in a store,
not cached so I don't think it really helps there a whole lot.
That's a separate discussion, but the repository is the store. Only a
subset of the POM is stored in the index, and there is no point
duplicating the POM it into some other store.
Anyway, not relevant - the current project builder caches everything
and needs to be made configurable so that it doesn't.
I don't see why it would matter, it's just swapping
implementations - either way the cache still needs to be moved if
the project builder is cleaned up. IMO it would be better not to
lose track of the change and do it now.
The function of the cache in there was ever only the short-lived in-
session reactor so that it didn't rebuild in that case. A long-
lived app should not be pulling an object from a cache from the
building to show in an application. A cache helping a real store
maybe, but in short that HashMap in the builder was for very short-
lived reasons i.e. the reactor and the builder is probably then the
wrong place for the cache. The builder should not be in the
business of caching project objects for applications.
I agree, but that wasn't my point.
How about if instead the project builder adds a temporary config item
that allows disabling the hashmap cache instead. Keep it there until
it is refactored out so Maven keeps working, and we can disable it
from Archiva and take care of the caching there?
- Brett
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]