Abhinav Roy created CLOUDSTACK-6831: ---------------------------------------
Summary: [Hyper-V] Improve the logging for VM snapshot failures as it is not supported. Right now it is throwing NPEs Key: CLOUDSTACK-6831 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-6831 Project: CloudStack Issue Type: Bug Security Level: Public (Anyone can view this level - this is the default.) Components: Management Server Affects Versions: 4.4.0 Environment: HyperV Reporter: Abhinav Roy Fix For: 4.4.0 Steps : ================ 1. Deploy a advanced zone hyperv setup. 2. Create a VM v1. 3. Create a VM snapshot on v1 Expected behavior : ================ Since VM snapshot is not supported in 4.4.0 for HyperV, the operation should fail gracefully with appropriate error message. Observed behavior : =============== VM snapshot operation fails with a NPE 2014-06-03 15:21:25,150 DEBUG [c.c.a.ApiServlet] (catalina-exec-7:ctx-8ce4a754) ===START=== 10.144.7.13 -- GET command=createVMSnapshot&virtualmachineid=fb624f96-c70f-4e25-94a0-65f9daf145aa&snapshotmemory=false&quiescevm=false&name=ss&response=json&sessionkey=o%2F8Vw1YoKZS4JAca7rkI3sCMSDs%3D&_=1401788814498 2014-06-03 15:21:25,168 ERROR [c.c.a.ApiServer] (catalina-exec-7:ctx-8ce4a754 ctx-ce4443a6) unhandled exception executing api command: [Ljava.lang.String;@7cfb6b51 java.lang.NullPointerException at com.cloud.hypervisor.dao.HypervisorCapabilitiesDaoImpl.isVmSnapshotEnabled(HypervisorCapabilitiesDaoImpl.java:104) 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:601) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at com.cloud.utils.db.TransactionContextInterceptor.invoke(TransactionContextInterceptor.java:34) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy179.isVmSnapshotEnabled(Unknown Source) at com.cloud.vm.snapshot.VMSnapshotManagerImpl.allocVMSnapshot(VMSnapshotManagerImpl.java:265) 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:601) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy182.allocVMSnapshot(Unknown Source) at org.apache.cloudstack.api.command.user.vmsnapshot.CreateVMSnapshotCmd.create(CreateVMSnapshotCmd.java:92) at com.cloud.api.dispatch.CommandCreationWorker.handle(CommandCreationWorker.java:47) at com.cloud.api.dispatch.DispatchChain.dispatch(DispatchChain.java:37) at com.cloud.api.ApiDispatcher.dispatchCreateCmd(ApiDispatcher.java:79) at com.cloud.api.ApiServer.queueCommand(ApiServer.java:614) at com.cloud.api.ApiServer.handleRequest(ApiServer.java:506) at com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:330) at com.cloud.api.ApiServlet.access$000(ApiServlet.java:54) at com.cloud.api.ApiServlet$1.run(ApiServlet.java:118) at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56) at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103) at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53) at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:115) at com.cloud.api.ApiServlet.doGet(ApiServlet.java:77) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:889) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:721) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) 2014-06-03 15:21:25,174 DEBUG [c.c.a.ApiServlet] (catalina-exec-7:ctx-8ce4a754 ctx-ce4443a6) ===END=== 10.144.7.13 -- GET command=createVMSnapshot&virtualmachineid=fb624f96-c70f-4e25-94a0-65f9daf145aa&snapshotmemory=false&quiescevm=false&name=ss&response=json&sessionkey=o%2F8Vw1YoKZS4JAca7rkI3sCMSDs%3D&_=1401788814498 -- This message was sent by Atlassian JIRA (v6.2#6252)