Steps to reproduce:
1. launch an image
2. wait for instance to start processing (doesn't have to be running state)
3. De-register the image
4. Restart Cloud Controller
5. Use API to describe image
Get this response:
"Server: unknown"
At this point, you can't use the euca-describe-image API call from admin or this user, but you can kill it. Then restarting the Cloud Controller restores access to the API.
What's happening, is when the ImageManager does the lookup in the DB, get throws an exception, but outside of the try/catch block, it uses the object which would have been initialised but is null and throws a NullPointerException, here on diskInfo.
ArrayList<String> ancestorIds = this.getAncestors(vmInfo.getOwnerId(), diskInfo.getImageLocation());
This then gets to ReplyQueue via Mule (how, I don't know), and throws a cast exception in parsePayload as VmInfo isn't of type EucalyptusMessage, VmAllocationInfo or String. I'm not quite sure what the correct fix is here, but ImageManager should be using diskInfo inside the try block. I don't know if that'll change the exception handling, but that should be more graceful to handle exceptions it doesn't know about. Would control then pass down to SystemState handle method to loop through to the next instance.
Can you recomend a patch to apply here? I think I'm going to try changing the exception handling in ReplyQueue and see how that goes.
Get these exception:
[30 07 2009 13:23:58] [edu.ucsb.eucalyptus.cloud.ws.ImageManager:ClusterMessageQueue-playpen@6C08FFAF] INFO Error locating information for emi-74DB0EE2
edu.ucsb.eucalyptus.cloud.EucalyptusCloudException: Error locating information for emi-74DB0EE2
at edu.ucsb.eucalyptus.cloud.entities.EntityWrapper.getUnique(EntityWrapper.java:105)
at edu.ucsb.eucalyptus.cloud.entities.ImageInfo.named(ImageInfo.java:333)
at edu.ucsb.eucalyptus.cloud.ws.ImageManager.verify(ImageManager.java:126)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mule.model.resolvers.AbstractEntryPointResolver.invokeMethod(AbstractEntryPointResolver.java:147)
at org.mule.model.resolvers.ReflectionEntryPointResolver.invoke(ReflectionEntryPointResolver.java:178)
at org.mule.model.resolvers.DefaultEntryPointResolverSet.invoke(DefaultEntryPointResolverSet.java:50)
at org.mule.component.DefaultLifecycleAdapter.intercept(DefaultLifecycleAdapter.java:202)
at org.mule.component.AbstractJavaComponent.invokeComponentInstance(AbstractJavaComponent.java:82)
at org.mule.component.AbstractJavaComponent.doOnCall(AbstractJavaComponent.java:73)
at org.mule.component.AbstractComponent.onCall(AbstractComponent.java:87)
at org.mule.model.seda.SedaService.doSend(SedaService.java:234)
at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:351)
at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:196)
at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:164)
at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:604)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:346)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:269)
at org.mule.transport.vm.VMMessageReceiver.onCall(VMMessageReceiver.java:106)
at org.mule.transport.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:104)
at org.mule.transport.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:157)
at org.mule.transport.AbstractConnector.send(AbstractConnector.java:1889)
at org.mule.endpoint.DefaultOutboundEndpoint.send(DefaultOutboundEndpoint.java:76)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:324)
at org.mule.module.client.MuleClient.send(MuleClient.java:653)
at org.mule.module.client.MuleClient.send(MuleClient.java:630)
at org.mule.module.client.MuleClient.send(MuleClient.java:583)
at edu.ucsb.eucalyptus.util.Messaging.send(Messaging.java:67)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.restoreInstance(SystemState.java:322)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.updateVmInstance(SystemState.java:293)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.handle(SystemState.java:100)
at edu.ucsb.eucalyptus.cloud.cluster.VmUpdateCallback.process(VmUpdateCallback.java:65)
at edu.ucsb.eucalyptus.cloud.cluster.VmUpdateCallback.process(VmUpdateCallback.java:16)
at edu.ucsb.eucalyptus.cloud.cluster.QueuedEvent.trigger(QueuedEvent.java:31)
at edu.ucsb.eucalyptus.cloud.cluster.ClusterMessageQueue.run(ClusterMessageQueue.java:117)
at java.lang.Thread.run(Thread.java:619)
[30 07 2009 13:23:58] [org.mule.service.DefaultServiceExceptionStrategy:ClusterMessageQueue-playpen@6C08FFAF] ERROR
********************************************************************************
Message : Component that caused exception is: ImageResolve. Message payload is of type: VmInfo
Type : org.mule.api.service.ServiceException
Code : MULE_ERROR--2
Payload : ["placement":"playpen", "launchIndex":"0", "ownerId":"admin", "groupNames":["default"], "instanceId":"i-426707DE", "class":class edu.ucsb.eucalyptus.cloud.VmInfo, "kernelId":"eki-F4DB10D7", "reservationId":"r-31FD0667", "volumes":[], "userData":"", "metaClass":groovy.lang.MetaClassImpl@6f3a342a[class edu.ucsb.eucalyptus.cloud.VmInfo], "instanceType":VmTypeInfo{name='m1.small', memory=128, disk=1, cores=1}, "serviceTag":"http://vm-container-0-0:8775/axis2/services/EucalyptusNC", "imageId":"emi-74DB0EE2", "productCodes":[], "launchTime":Thu Jul 30 13:22:47 BST 2009, "ramdiskId":"", "stateName":"Extant", "netParams":NetworkConfigType{macAddress='d0:0d:42:67:07:DE', ipAddress='172.29.23.2', publicIp='0.0.0.0', vlan=370}, "keyValue":""]
JavaDoc : http://mule.mulesource.org/docs/apidocs/org/mule/api/service/ServiceException.html
********************************************************************************
Exception stack is:
1. null (java.lang.NullPointerException)
edu.ucsb.eucalyptus.cloud.ws.ImageManager:140 (null)
2. Component that caused exception is: ImageResolve. Message payload is of type: VmInfo (org.mule.api.service.ServiceException)
org.mule.component.DefaultLifecycleAdapter:214 (http://mule.mulesource.org/docs/apidocs/org/mule/api/service/ServiceException.html)
********************************************************************************
Root Exception stack trace:
java.lang.NullPointerException
at edu.ucsb.eucalyptus.cloud.ws.ImageManager.verify(ImageManager.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mule.model.resolvers.AbstractEntryPointResolver.invokeMethod(AbstractEntryPointResolver.java:147)
at org.mule.model.resolvers.ReflectionEntryPointResolver.invoke(ReflectionEntryPointResolver.java:178)
at org.mule.model.resolvers.DefaultEntryPointResolverSet.invoke(DefaultEntryPointResolverSet.java:50)
at org.mule.component.DefaultLifecycleAdapter.intercept(DefaultLifecycleAdapter.java:202)
at org.mule.component.AbstractJavaComponent.invokeComponentInstance(AbstractJavaComponent.java:82)
at org.mule.component.AbstractJavaComponent.doOnCall(AbstractJavaComponent.java:73)
at org.mule.component.AbstractComponent.onCall(AbstractComponent.java:87)
at org.mule.model.seda.SedaService.doSend(SedaService.java:234)
at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:351)
at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:196)
at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:164)
at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:604)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:346)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:269)
a.lang.ClassCastException: edu.ucsb.eucalyptus.cloud.VmInfo cannot be cast to java.lang.String
at edu.ucsb.eucalyptus.ic.ReplyQueue.parsePayload(ReplyQueue.java:113)
at edu.ucsb.eucalyptus.ic.ReplyQueue.handle(ReplyQueue.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mule.model.resolvers.AbstractEntryPointResolver.invokeMethod(AbstractEntryPointResolver.java:147)
at org.mule.model.resolvers.ReflectionEntryPointResolver.invoke(ReflectionEntryPointResolver.java:178)
at org.mule.model.resolvers.DefaultEntryPointResolverSet.invoke(DefaultEntryPointResolverSet.java:50)
at org.mule.component.DefaultLifecycleAdapter.intercept(DefaultLifecycleAdapter.java:202)
at org.mule.component.AbstractJavaComponent.invokeComponentInstance(AbstractJavaComponent.java:82)
at org.mule.component.AbstractJavaComponent.doOnCall(AbstractJavaComponent.java:73)
at org.mule.component.AbstractComponent.onCall(AbstractComponent.java:87)
at org.mule.model.seda.SedaService.doSend(SedaService.java:234)
at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:351)
at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:196)
at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:164)
at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:604)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:346)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:269)
at org.mule.transport.vm.VMMessageReceiver.onCall(VMMessageReceiver.java:106)
at org.mule.transport.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:104)
at org.mule.transport.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:157)
at org.mule.transport.AbstractConnector.send(AbstractConnector.java:1889)
at org.mule.endpoint.DefaultOutboundEndpoint.send(DefaultOutboundEndpoint.java:76)
at org.mule.AbstractExceptionListener.routeException(AbstractExceptionListener.java:307)
at org.mule.service.DefaultServiceExceptionStrategy.routeException(DefaultServiceExceptionStrategy.java:60)
at org.mule.DefaultExceptionStrategy.handleMessagingException(DefaultExceptionStrategy.java:30)
at org.mule.AbstractExceptionListener.exceptionThrown(AbstractExceptionListener.java:144)
at org.mule.service.AbstractService.handleException(AbstractService.java:561)
at org.mule.model.seda.SedaService.doSend(SedaService.java:249)
at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:351)
at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:196)
at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:164)
at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:604)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:346)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:269)
at org.mule.transport.vm.VMMessageReceiver.onCall(VMMessageReceiver.java:106)
at org.mule.transport.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:104)
at org.mule.transport.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:157)
at org.mule.transport.AbstractConnector.send(AbstractConnector.java:1889)
at org.mule.endpoint.DefaultOutboundEndpoint.send(DefaultOutboundEndpoint.java:76)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:324)
at org.mule.module.client.MuleClient.send(MuleClient.java:653)
at org.mule.module.client.MuleClient.send(MuleClient.java:630)
at org.mule.module.client.MuleClient.send(MuleClient.java:583)
at edu.ucsb.eucalyptus.util.Messaging.send(Messaging.java:67)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.restoreInstance(SystemState.java:322)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.updateVmInstance(SystemState.java:293)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.handle(SystemState.java:100)
at edu.ucsb.eucalyptus.cloud.cluster.VmUpdateCallback.process(VmUpdateCallback.java:65)
at edu.ucsb.eucalyptus.cloud.cluster.VmUpdateCallback.process(VmUpdateCallback.java:16)
at edu.ucsb.eucalyptus.cloud.cluster.QueuedEvent.trigger(QueuedEvent.java:31)
at edu.ucsb.eucalyptus.cloud.cluster.ClusterMessageQueue.run(ClusterMessageQueue.java:117)
at java.lang.Thread.run(Thread.java:619)t org.mule.transport.vm.VMMessageReceiver.onCall(VMMessageReceiver.java:106)
at org.mule.transport.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:104)
at org.mule.transport.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:157)
at org.mule.transport.AbstractConnector.send(AbstractConnector.java:1889)
at org.mule.endpoint.DefaultOutboundEndpoint.send(DefaultOutboundEndpoint.java:76)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:324)
at org.mule.module.client.MuleClient.send(MuleClient.java:653)
at org.mule.module.client.MuleClient.send(MuleClient.java:630)
at org.mule.module.client.MuleClient.send(MuleClient.java:583)
at edu.ucsb.eucalyptus.util.Messaging.send(Messaging.java:67)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.restoreInstance(SystemState.java:322)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.updateVmInstance(SystemState.java:293)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.handle(SystemState.java:100)
at edu.ucsb.eucalyptus.cloud.cluster.VmUpdateCallback.process(VmUpdateCallback.java:65)
at edu.ucsb.eucalyptus.cloud.cluster.VmUpdateCallback.process(VmUpdateCallback.java:16)
at edu.ucsb.eucalyptus.cloud.cluster.QueuedEvent.trigger(QueuedEvent.java:31)
at edu.ucsb.eucalyptus.cloud.cluster.ClusterMessageQueue.run(ClusterMessageQueue.java:117)
at java.lang.Thread.run(Thread.java:619)
********************************************************************************
[30 07 2009 13:23:58] [org.mule.service.DefaultServiceExceptionStrategy:ClusterMessageQueue-playpen@6C08FFAF] ERROR Message being processed is: org.mule.transport.DefaultMessageAdapter/org.mule.transport.DefaultMessageAdapter@373bc99b{id=db25e0a4-7d03-11de-837c-2f62592abd08, payload=edu.ucsb.eucalyptus.cloud.VmInfo, correlationId=null, correlationGroup=-1, correlationSeq=-1, encoding=UTF-8, exceptionPayload=org.mule.message.DefaultExceptionPayload@3630fb71}
[30 07 2009 13:23:58] [edu.ucsb.eucalyptus.ic.ReplyQueue:ClusterMessageQueue-playpen@6C08FFAF] ERROR Bailing out of error handling: don't have the correlationId for the caller!
[30 07 2009 13:23:58] [edu.ucsb.eucalyptus.ic.ReplyQueue:ClusterMessageQueue-playpen@6C08FFAF] ERROR java.lang.ClassCastException: edu.ucsb.eucalyptus.cloud.VmInfo cannot be cast to java.lang.String
java.lang.ClassCastException: edu.ucsb.eucalyptus.cloud.VmInfo cannot be cast to java.lang.String
at edu.ucsb.eucalyptus.ic.ReplyQueue.parsePayload(ReplyQueue.java:113)
at edu.ucsb.eucalyptus.ic.ReplyQueue.handle(ReplyQueue.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mule.model.resolvers.AbstractEntryPointResolver.invokeMethod(AbstractEntryPointResolver.java:147)
at org.mule.model.resolvers.ReflectionEntryPointResolver.invoke(ReflectionEntryPointResolver.java:178)
at org.mule.model.resolvers.DefaultEntryPointResolverSet.invoke(DefaultEntryPointResolverSet.java:50)
at org.mule.component.DefaultLifecycleAdapter.intercept(DefaultLifecycleAdapter.java:202)
at org.mule.component.AbstractJavaComponent.invokeComponentInstance(AbstractJavaComponent.java:82)
at org.mule.component.AbstractJavaComponent.doOnCall(AbstractJavaComponent.java:73)
at org.mule.component.AbstractComponent.onCall(AbstractComponent.java:87)
at org.mule.model.seda.SedaService.doSend(SedaService.java:234)
at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:351)
at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:196)
at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:164)
at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:604)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:346)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:269)
at org.mule.transport.vm.VMMessageReceiver.onCall(VMMessageReceiver.java:106)
at org.mule.transport.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:104)
at org.mule.transport.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:157)
at org.mule.transport.AbstractConnector.send(AbstractConnector.java:1889)
at org.mule.endpoint.DefaultOutboundEndpoint.send(DefaultOutboundEndpoint.java:76)
at org.mule.AbstractExceptionListener.routeException(AbstractExceptionListener.java:307)
at org.mule.service.DefaultServiceExceptionStrategy.routeException(DefaultServiceExceptionStrategy.java:60)
at org.mule.DefaultExceptionStrategy.handleMessagingException(DefaultExceptionStrategy.java:30)
at org.mule.AbstractExceptionListener.exceptionThrown(AbstractExceptionListener.java:144)
at org.mule.service.AbstractService.handleException(AbstractService.java:561)
at org.mule.model.seda.SedaService.doSend(SedaService.java:249)
at org.mule.service.AbstractService.sendEvent(AbstractService.java:510)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:351)
at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:196)
at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:164)
at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:604)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:346)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:269)
at org.mule.transport.vm.VMMessageReceiver.onCall(VMMessageReceiver.java:106)
at org.mule.transport.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:104)
at org.mule.transport.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:157)
at org.mule.transport.AbstractConnector.send(AbstractConnector.java:1889)
at org.mule.endpoint.DefaultOutboundEndpoint.send(DefaultOutboundEndpoint.java:76)
at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:324)
at org.mule.module.client.MuleClient.send(MuleClient.java:653)
at org.mule.module.client.MuleClient.send(MuleClient.java:630)
at org.mule.module.client.MuleClient.send(MuleClient.java:583)
at edu.ucsb.eucalyptus.util.Messaging.send(Messaging.java:67)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.restoreInstance(SystemState.java:322)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.updateVmInstance(SystemState.java:293)
at edu.ucsb.eucalyptus.cloud.ws.SystemState.handle(SystemState.java:100)
at edu.ucsb.eucalyptus.cloud.cluster.VmUpdateCallback.process(VmUpdateCallback.java:65)
at edu.ucsb.eucalyptus.cloud.cluster.VmUpdateCallback.process(VmUpdateCallback.java:16)
at edu.ucsb.eucalyptus.cloud.cluster.QueuedEvent.trigger(QueuedEvent.java:31)
at edu.ucsb.eucalyptus.cloud.cluster.ClusterMessageQueue.run(ClusterMessageQueue.java:117)
at java.lang.Thread.run(Thread.java:619)
[30 07 2009 13:23:58] [org.mule.config.ExceptionHelper:ClusterMessageQueue-playpen@6C08FFAF] WARN Failed to load error mappings from: META-INF/services/org/mule/config/vm-exception-mappings.properties This may be because there are no error code mappings for protocol: vm
Any updates / fixes available for this bug?