Is there any way of not using or even not reserving the memory of this
cache?
I am tring to reduce memory consumption to bare minimum and i dont use this
cache at all ...
On Jun 10, 2014 7:01 PM, "Ignasi Barrera" <[email protected]> wrote:

> Hi!
>
> TL;DR: Populating images in the image cache.
>
> I'm working on a fix for JCLOUDS-588 [1] and I have a first
> implementation [2]. However, before submitting a pull request I want
> to validate it here.
>
> Basically the issue is the population of the image cache. When using
> the ComputeService, jclouds caches the list of images (as it can be an
> expensive operation) in a memoized supplier. That cache is used by the
> TemplateBuilder, the default ComputeServiceAdapter and by most of the
> classes in the compute abstraction, to avoid making unnecessary
> expensive calls to the provider.
>
> There are, at least, two cases in which the use of this cache is
> leading to images not being found:
>
> * When images are created with the ImageExtension (see JCLOUDS-512 [3]).
> * When providers don't return some images when listing them but a
> "getById" call works (see JCLOUDS-570 [1]).
>
>
> IMO, the safest approach to fix this is to populate the missing images
> in the cache as soon as we find them. The challenging thing is that
> the image cache is currently implemented as a memoized supplier, which
> is basically a singleton immutable set, so we can't write to it or
> copy it to a new instance, as there are many classes that will have it
> already injected.
>
> In the current patch I'm working on, I've created an
> ImageCacheSupplier [5] that acts as a "view" of that memoized
> supplier. It provides a "registerImage" method to register the
> discovered images, and it returns the composition of both, the cached
> and discovered ones when someone calls its "get()" method. That
> ImageCacheSupplier replaces the current memoized supplier, so it is by
> default injected in all providers.
>
>
> And my questions are:
>
> * We have to manually populate the images in the cache as soon as we
> know they're missing. This is obvious in the template builder and the
> image extension. Do you have in mind any other case or place in the
> code where we should take care of populating images? (Doing this by
> default can be overkill as noted in JCLOUDS-588 comments, so we'd
> better identify where we might find unknown images and register them
> there).
>
> * Do you have in mind an alternate/better approach to this one? :)
>
>
> Thanks!
>
> Ignasi
>
>
> [1] https://issues.apache.org/jira/browse/JCLOUDS-588
> [2] https://github.com/nacx/jclouds/tree/588-imagecache
> [3] https://issues.apache.org/jira/browse/JCLOUDS-512
> [4] https://issues.apache.org/jira/browse/JCLOUDS-570
> [5]
> https://github.com/nacx/jclouds/blob/588-imagecache/compute/src/main/java/org/jclouds/compute/suppliers/ImageCacheSupplier.java
>

Reply via email to