You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jclouds.apache.org by "Ignasi Barrera (JIRA)" <ji...@apache.org> on 2014/06/10 09:27:02 UTC

[jira] [Commented] (JCLOUDS-588) Exception creating node rackspace with unlisted image

    [ https://issues.apache.org/jira/browse/JCLOUDS-588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14026207#comment-14026207 ] 

Ignasi Barrera commented on JCLOUDS-588:
----------------------------------------

This seems to be related again to the image cache. Having the {{TemplateBuilderImpl}} fallback to the {{GetImageStrategy}} is not enough, as it seems that the image cache is being used in many other places. The cache is exposed via a memoized supplier that is bound to the Guice context, and providers are free to use that supplier to operate with the (cached) image list.

As the uses of the supplier are not predictable, the right approach to fix this would be to add the image to the cache as soon as we notice it is missing. In this case, it would be enough to populate it in the {{TemplateBuilderImpl}} itself when falling back to the {{GetImageStrategy}}. It would be desirable to implement this too in all the places where the {{GetImageStrategy}} is used (implementing it in the {{GetImageStrategy}} won't work as many providers already override it), and always check if the returned image is in the cache. It wouls be an in-memory check, so it wouldn't introduce much overhead.

Fixing this issue by exposing the image cache in a more usable way, so we can populate new (or "secret") images to it might also help fixing JCLOUDS-512.

> Exception creating node rackspace with unlisted image
> -----------------------------------------------------
>
>                 Key: JCLOUDS-588
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-588
>             Project: jclouds
>          Issue Type: Bug
>    Affects Versions: 1.7.4
>            Reporter: Hugo Duncan
>            Assignee: Ignasi Barrera
>
> When creating a CoreOS node on rackspace, the following exception occurs.
> Maybe linked to missing image data (see #570).
> {code}
> 2014-06-06 17:35:16 WARN [pallet.compute.jclouds] req41761 - Run nodes exception
> org.jclouds.compute.RunNodesException: error running 1 node group(coreos-default) location(DFW) image(70210a69-081e-4a5e-b402-3cdbabfdcddd) size(2) options({scriptPresent=true, publicKeyPresent=true, autoAssignFloatingIp=false, keyPairName=coreos-key, userData=[B@734ce81, configDrive=false})
>                                        Execution failures:
>                                        
>                                        1) ExecutionException on coreos-default-4bb:
>                                        java.util.concurrent.ExecutionException: java.lang.NullPointerException
>                                        	at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
>                                        	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
>                                        	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
>                                        	at org.jclouds.concurrent.FutureIterables$1.run(FutureIterables.java:125)
>                                        	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>                                        	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>                                        	at java.lang.Thread.run(Thread.java:745)
>                                        Caused by: java.lang.NullPointerException
>                                        	at org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies.createNodeWithGroupEncodedIntoName(AdaptingComputeServiceStrategies.java:211)
>                                        	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:81)
>                                        	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet$AddNode.call(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:65)
>                                        	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>                                        	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>                                        	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>                                        	at java.lang.Thread.run(Thread.java:745)
>                                        	at java.lang.Thread.getStackTrace(Thread.java:1589)
>                                        	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:169)
>                                        	at org.jclouds.openstack.nova.v2_0.compute.strategy.ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.createNodeInGroupWithNameAndTemplate(ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java:155)
>                                        	at org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(CreateNodesWithGroupEncodedIntoNameThenAddToSet.java:124)
>                                        	at org.jclouds.openstack.nova.v2_0.compute.strategy.ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.execute(ApplyNovaTemplateOptionsCreateNodesWithGroupEncodedIntoNameThenAddToSet.java:148)
>                                        	at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:215)
>                                        	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>                                        	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>                                        	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>                                        	at java.lang.reflect.Method.invoke(Method.java:606)
>                                        	at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
>                                        	at com.sun.proxy.$Proxy59.createNodesInGroup(Unknown Source)
>                                        	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>                                        	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>                                        	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>                                        	at java.lang.reflect.Method.invoke(Method.java:606)
>                                        	at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
>                                        	at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)
>                                        	at com.palletops.jclouds.compute2$create_nodes.invoke(compute2.clj:169)
>                                        	at pallet.compute.jclouds.JcloudsService.create_nodes(jclouds.clj:645)
>                                        	at pallet.compute$create_nodes.invoke(compute.clj:164)
>                                        	at pallet.phase$create_nodes_phase$create_nodes__22067.invoke(phase.clj:161)
>                                        	at pallet.phase$series_phases$fn__21574$state_machine__4740__auto____21575$fn__21577.invoke(phase.clj:57)
>                                        	at pallet.phase$series_phases$fn__21574$state_machine__4740__auto____21575.invoke(phase.clj:57)
>                                        	at clojure.core.async.impl.ioc_macros$run_state_machine.invoke(ioc_macros.clj:945)
>                                        	at clojure.core.async.impl.ioc_macros$run_state_machine_wrapped.invoke(ioc_macros.clj:949)
>                                        	at pallet.phase$series_phases$fn__21574.invoke(phase.clj:57)
>                                        	at clojure.lang.AFn.run(AFn.java:22)
>                                        	... 3 more
>                                        
>                                        
>                                        1 error[s]
>                                        Node failures:
>                                        
>                                        0 error[s]
>               count: 1
>     executionErrors: {"coreos-default-4bb" #<ExecutionException java.util.concurrent.ExecutionException: java.lang.NullPointerException>}
>               group: "coreos-default"
>          nodeErrors: {}
>     successfulNodes: #{}
>            template: #<TemplateImpl {image={id=DFW/70210a69-081e-4a5e-b402-3cdbabfdcddd, providerId=70210a69-081e-4a5e-b402-3cdbabfdcddd, name=CoreOS, location={scope=ZONE, id=DFW, description=DFW, parent=rackspace-cloudservers-us, iso3166Codes=[US-TX]}, os={family=unrecognized, name=CoreOS, description=CoreOS, is64Bit=true}, description=CoreOS, status=AVAILABLE, userMetadata={os_distro=coreos, com.rackspace__1__visible_core=1, com.rackspace__1__release_version=8, com.rackspace__1__build_rackconnect=0, image_type=base, com.rackspace__1__release_build_date=2014-05-09_15-53-20, org.openstack__1__os_version=0, org.openstack__1__os_distro=coreos, cache_in_nova=True, os_type=linux, com.rackspace__1__visible_rackconnect=0, org.openstack__1__architecture=x64, com.rackspace__1__platform_target=PublicCloud, auto_disk_config=disabled, com.rackspace__1__options=0, com.rackspace__1__visible_managed=0, com.rackspace__1__build_core=1, com.rackspace__1__source=kickstart, vm_mode=hvm, com.rackspace__1__build_managed=0}}, hardware={id=DFW/2, providerId=2, name=512MB Standard Instance, location={scope=ZONE, id=DFW, description=DFW, parent=rackspace-cloudservers-us, iso3166Codes=[US-TX]}, processors=[{cores=1.0, speed=1.0}], ram=512, volumes=[{type=LOCAL, size=20.0, bootDevice=true, durable=true}], supportsImage=ALWAYS_TRUE}, location={scope=ZONE, id=DFW, description=DFW, parent=rackspace-cloudservers-us, iso3166Codes=[US-TX]}, options={scriptPresent=true, publicKeyPresent=true, autoAssignFloatingIp=false, keyPairName=coreos-key, userData=[B@734ce81, configDrive=false}}>
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)