Uploaded image for project: 'jclouds'
  1. jclouds
  2. JCLOUDS-512

Cannot start instance from newly created image in ComputeService

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.7.1
    • Fix Version/s: 2.0.0
    • Component/s: jclouds-compute
    • Labels:
      None

      Description

      A user found that after they create an image, they cannot start an instance of that image due to it not being found by the TemplateBuilder. See the example code and log in the following gist.

      https://gist.github.com/everett-toews/5447098

      I suspect the images in the TemplateBuilder are being cached and the new one isn't added to that cache but haven't been able to track down the offending code yet.

      Some notes from IRC for future work:

      in TemplateBuilderImpl images is Memoized
      the supplier is in BaseComputeServiceContextModule.supplyImageCache()
      protected Optional<SecurityGroupExtension> provideSecurityGroupExtension(Injector i) {

      look at the aws code
      part of it is EC2TemplateBuilderImpl.lazyImageProvider
      it is backed by a map
      which you could listen for and invalidate the image cache entry

      if the cache interval doesn't work, it is one thing
      to express an invalidation, well there's a couple ways
      dig deep
      and monkey around with internal classes
      or expose a ListOption.invalidate()
      and code'in providers to invalidate the cache when they encounter this flag

      it's not just cache interval, it's PROPERTY_SESSION_INTERVAL. from the name it sounds like if you set it to something low it would invalidate the whole session and reauth, just to invalidate that cache.
      there's no parameter for the cache

      probably what would be most helpful is to expose a property that corresponds to CacheBuilderSpec format
      ex. images.cache-spec=expireAfterWrite=300,refreshInterval=10000
      pass that in as a property
      then people can go to town tuning without special casing everything or conflating things like session interval with cache expiry

      basically, you can see how "template" is wired in
      then re-use that approach for the caches
      the most important one being images
      so you could skip the others for now

        Attachments

        Issue Links

          Activity

            People

            • Assignee:
              nacx Ignasi Barrera
              Reporter:
              everett-toews Everett Toews

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment