'Server: unknown' on startup after deregistering a running image

Bug #406878 reported by robb1e
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Eucalyptus
New
Undecided
chris grzegorczyk

Bug Description

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

Revision history for this message
danleyden (dan-52degreesnorth) wrote :

Any updates / fixes available for this bug?

Revision history for this message
robb1e (robert-clutton) wrote :

I managed to fix this by applying this patch to ImageManager.java

@@ -147,11 +147,17 @@
             db.clean();
         }

- ArrayList<String> ancestorIds = this.getAncestors(vmInfo.getOwnerId(), diskInfo.getImageLocation());
-
- // :: create the response assets now since we might not have a ramdisk anyway :://
- VmImageInfo vmImgInfo = new VmImageInfo(vmInfo.getImageId(), vmInfo.getKernelId(), vmInfo.getRamdiskId(), diskUrl, null, null, productCodes);
- vmImgInfo.setAncestorIds(ancestorIds);
+ VmImageInfo vmImgInfo;
+ if (null != diskInfo && null != diskUrl){
+ ArrayList<String> ancestorIds = this.getAncestors(vmInfo.getOwnerId(), diskInfo.getImageLocation());
+
+ // :: create the response assets now since we might not have a ramdisk anyway :://
+ vmImgInfo = new VmImageInfo(vmInfo.getImageId(), vmInfo.getKernelId(), vmInfo.getRamdiskId(), diskUrl, null, null, productCodes);
+ vmImgInfo.setAncestorIds(ancestorIds);
+ } else {
+ vmImgInfo = new VmImageInfo(vmInfo.getImageId(), vmInfo.getKernelId(), vmInfo.getRamdiskId(), "", null, null, productCodes);
+ vmImgInfo.setAncestorIds(new ArrayList<String>());
+ }
         return vmImgInfo;
     }

Revision history for this message
danleyden (dan-52degreesnorth) wrote : Re: [Bug 406878] Re: 'Server: unknown' on startup after deregistering a running image
Download full text (23.7 KiB)

Thanks Robb1e,

you da man!

2009/9/1 robb1e <email address hidden>:
> I managed to fix this by applying this patch to ImageManager.java
>
> @@ -147,11 +147,17 @@
>             db.clean();
>         }
>
> -        ArrayList<String> ancestorIds = this.getAncestors(vmInfo.getOwnerId(), diskInfo.getImageLocation());
> -
> -        // :: create the response assets now since we might not have a ramdisk anyway :://
> -        VmImageInfo vmImgInfo = new VmImageInfo(vmInfo.getImageId(), vmInfo.getKernelId(), vmInfo.getRamdiskId(), diskUrl, null, null, productCodes);
> -        vmImgInfo.setAncestorIds(ancestorIds);
> +        VmImageInfo vmImgInfo;
> +        if (null != diskInfo && null != diskUrl){
> +               ArrayList<String> ancestorIds = this.getAncestors(vmInfo.getOwnerId(), diskInfo.getImageLocation());
> +
> +               // :: create the response assets now since we might not have a ramdisk anyway :://
> +               vmImgInfo = new VmImageInfo(vmInfo.getImageId(), vmInfo.getKernelId(), vmInfo.getRamdiskId(), diskUrl, null, null, productCodes);
> +               vmImgInfo.setAncestorIds(ancestorIds);
> +        } else {
> +               vmImgInfo = new VmImageInfo(vmInfo.getImageId(), vmInfo.getKernelId(), vmInfo.getRamdiskId(), "", null, null, productCodes);
> +               vmImgInfo.setAncestorIds(new ArrayList<String>());
> +        }
>         return vmImgInfo;
>     }
>
> --
> 'Server: unknown' on startup after deregistering a running image
> https://bugs.launchpad.net/bugs/406878
> You received this bug notification because you are subscribed to
> Eucalyptus.
>
> Status in Eucalyptus: New
>
> Bug description:
> 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....

Changed in eucalyptus:
assignee: nobody → chris grzegorczyk (chris-grze)
Revision history for this message
Andy Grimm (agrimm) wrote :

This issue is now being tracked upstream at http://eucalyptus.atlassian.net/browse/EUCA-2654

Please watch that issue for further updates.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.